Arsitektur Kubernetes: Semua yang Perlu Anda Ketahui di 2022

Diterbitkan: 2021-01-05

Daftar isi

Tentang Kubernetes

Kubernetes adalah platform open-source dengan fitur-fitur seperti maksimalisasi sumber daya, proses penerapan dan pembaruan otomatis, penskalaan otomatis, penyembuhan sendiri, rollback dan peluncuran otomatis, dan penyeimbangan beban orkestra kontainer, dan penemuan layanan, mulai ulang otomatis, penempatan otomatis, dan auto-replikasi, dll. Kubernetes bukan hanya orkestra kontainer; itu juga merupakan OS untuk aplikasi berbasis cloud.

Ini seperti platform untuk menjalankan aplikasi yang mirip dengan aplikasi lain yang berjalan di Windows, MacOS, atau Linux dengan fleksibilitas yang lebih besar. Ini mengurangi beban pengaturan dan memungkinkan pengembang untuk sepenuhnya fokus pada alur kerja yang berpusat pada wadah untuk tujuan operasi swalayan. Pengembang memiliki keuntungan dari otomatisasi tingkat tinggi dalam penerapan dan manajemen aplikasi. Itu dapat diintegrasikan dengan lingkungan apa pun untuk meningkatkan kemampuan.

Baca: Gaji Kubernetes di India

Arsitektur Kubernetes

Arsitektur Kubernetes terdiri dari lapisan: Lapisan atas dan lapisan bawah. Dalam individu ini, mesin fisik atau virtual disatukan menjadi sebuah cluster. Jaringan bersama digunakan untuk komunikasi antara setiap server. Kubernetes memiliki satu master (setidaknya) yang bertindak sebagai bidang kontrol, sistem penyimpanan terdistribusi. Beberapa node cluster juga dikenal sebagai Kubelet.

  • Master Kubernetes, control plane, menjadwalkan penerapan, mengekspos API, dan mengelola cluster Kubernetes secara keseluruhan.
  • Node cluster menjalankan runtime container, agen untuk berkomunikasi dengan master, dan komponen pemantauan lainnya, logging, dll.

Arsitektur Kubernetes dan komponen Kubernetes diilustrasikan pada gambar di bawah ini.

Sumber

Mari kita lihat komponen Kubernetes .

Komponen Kubernetes

Master: Pesawat Kontrol Kubernetes

Master menyimpan data setiap objek di Kubernetes. Karena mengelola seluruh cluster, maka disebut sebagai Master. Ini mengontrol status objek, mempertahankan kecocokan status nyata sistem dengan status yang diperlukan, merespons perubahan, dll.

Ini berisi tiga komponen penting berikut:

  • Kube- Server API: Server API Kubernetes
  • Kube- Scheduler: Penjadwalan Pod di node pekerja
  • Kube- Controller: Mengelola replikasi pod

Jika ada beberapa node master, maka komponen ini direplikasi di semua node master.

Orkestrasi siklus hidup untuk berbagai aplikasi yang mencakup pembaruan, penskalaan, dll. Dilakukan oleh Server API. Ini berfungsi sebagai gateway untuk klien yang tidak berada dalam cluster. Server API melakukan otentikasi. Itu juga bertindak seperti perantara untuk pod dan node.

Controller melakukan tugas-tugas berikut:

  • Menjalankan loop kontrol inti
  • Membuat perubahan untuk status mengemudi menuju status yang diperlukan.
  • Menonton status cluster

Ia juga menawarkan perutean, layanan penyimpanan, penyeimbangan beban, layanan jaringan DNS, instans VM dengan mengintegrasikan ke cloud publik. Kontroler berbeda yang mendorong status untuk penskalaan otomatis, node, layanan dan pod, ruang nama.

Penjadwalan container di seluruh node dilakukan oleh Scheduler di dalam cluster; mempertimbangkan batasan/jaminan sumber daya yang berbeda, atau spesifikasi anti-afinitas/afinitas.

Taksonomi Control Plane Kubernetes ditunjukkan di bawah ini:

Sumber

Node Cluster: Kubelets

Kubelet adalah mesin berbeda yang bertanggung jawab untuk menjalankan container. Master melakukan pengelolaan node cluster. Itu juga disebut Minion. Node cluster dianggap sebagai pengontrol utama Kubernetes. Ini menggerakkan Docker, lapisan eksekusi kontainer.

Ini berisi komponen-komponen berikut:

  • Pod: Kelompok kontainer
  • Docker: Teknologi berbasis container, ruang pengguna OS
  • Kubelet: Agen kontainer yang bertanggung jawab untuk memelihara kumpulan pod.
  • Kube-proxy: Merutekan lalu lintas yang masuk ke node dari layanan.

Taksonomi Cluster Node Kubernetes ditunjukkan di bawah ini:

Sumber

Pod dan Layanan

Pod adalah konsep penting di Kubernetes yang digunakan developer untuk berinteraksi. Ini mewakili proses yang sedang berjalan. Itu dapat meng-host tumpukan aplikasi yang terintegrasi secara vertikal seperti aplikasi WordPress LAMP. Diberikan di bawah ini adalah jenis pod yang berbeda:

Jenis Pod Kegunaan
Set Replika Jenis Pod sederhana

Memastikan berjalannya pod tetap

Penyebaran Manajemen pod cara deklaratif melalui ReplicaSet

Pembaruan bergulir dan mekanisme pengembalian disertakan.

StatefulSet Mengelola pod yang seharusnya bertahan
daemonset Memastikan setiap node menjalankan instance pod.

Mengelola layanan cluster seperti penerusan log dan pemantauan kesehatan.

CronJob dan Pekerjaan Menjalankan pekerjaan yang berumur pendek sebagai penjadwal

Sebuah pod dapat terdiri dari sejumlah container dan volume eksternal. Taksonomi pod ditunjukkan pada diagram di bawah ini:

Sumber

Layanan melakukan pelacakan Pod. Untuk mendefinisikan pod dan asosiasi layanan, selektor atau label digunakan sebagai ganti penetapan alamat IP. Ini menyederhanakan penambahan pod ke layanan dan rilis versi baru. Berikut ini adalah jenis layanan yang berbeda:

Jenis Layanan Kegunaan
ClusterIP Jenis Bawaan; Mengekspos layanan pada IP internal dan membuat layanan dapat dijangkau
NodePort Memungkinkan pengembang mengatur penyeimbang beban mereka sendiri
LoadBalancer Mengotomatiskan konfigurasi mereka
Nama Eksternal Biasanya digunakan untuk membuat layanan di dalam Kubernetes.

Penyebaran cloud khas yang digunakan adalah jenis LoadBalancer. Kubernetes mendukung abstraksi Ingress tingkat tinggi untuk menyelesaikan kompleksitas. Pengguna dapat menampilkan layanan yang berbeda dalam alamat IP yang sama dengan menggunakan penyeimbang beban yang sama.

Baca selengkapnya: Openshift Vs Kubernetes: Perbedaan Openshift & Kubernetes

Jaringan Kubernetes

Sebagian besar CNI (Container Network Interface) digunakan untuk mengaburkan jaringan dasar. Calico, opsi yang dirutekan sepenuhnya, juga dapat digunakan. Dalam kedua opsi tersebut, komunikasi dilakukan pada jaringan pod seluruh cluster dan dikendalikan oleh Calico atau Flannel (penyedia CNI). Kontainer dapat berkomunikasi dalam pod melalui localhost tanpa batasan apa pun. Perpindahan dari sumber eksternal ke layanan atau pod ke layanan dilakukan melalui proxy Kube.

Penyimpanan Persisten

Direktori yang memiliki beberapa data disebut sebagai Volume di Kubernetes. Direktori dapat diakses oleh pod. Ada banyak jenis penyimpanan di Kubernetes. Wadah di dalam pod dapat menggunakan penyimpanan apa pun. Layanan cloud publik seperti NFS, Amazon Elastic Block Store, Iscsi, CephFS, dll. digunakan untuk memasang file dan memblokir penyimpanan ke pod. PV (PersistentVolumes) adalah objek di seluruh cluster yang terkait dengan sumber daya penyimpanan yang ada.

Dalam namespace, permintaan konsumsi penyimpanan dimulai oleh PersistentVolumeClaim. Status PV yang berbeda tersedia, terikat, dirilis, dan gagal. StorageClasses adalah lapisan abstraksi. Ini membedakan kualitas penyimpanan yang mendasarinya dan memisahkan berbagai karakteristik. Pod dapat meminta penyimpanan baru secara dinamis dengan bantuan StorageClasses dan PersistentVolumeClaim.

Sumber

Layanan Penemuan dan Penerbitan

Bergantung pada versi cluster, Kubernetes bergantung pada Kube-DNS atau CoreDNS untuk menemukan layanan. Layanan DNS terintegrasi ini membuat, memperbarui, dan menghapus catatan DNS. Ini membantu aplikasi untuk menargetkan pod dan layanan lain melalui skema penamaan yang konsisten dan sederhana.

Contoh ( Sumber )

Untuk layanan Kubernetes, data DNS dapat berupa service.namespace.svc.cluster.local

Catatan DNS, sebuah pod dapat memiliki: 10.32.0.125.namespace.pod.cluster.local

Sumber

Ruang nama

Cluster Fisik yang berisi cluster virtual disebut Namespaces. Ini menyediakan lingkungan virtual terpisah untuk beberapa pengguna bersama dengan hak akses masing-masing untuk objek Kubernetes.

Label

Label digunakan untuk membedakan sumber daya yang ada dalam satu namespace. Atribut didefinisikan oleh pasangan kunci atau nilai. Label digunakan untuk memetakan struktur organisasi di atas objek Kubernetes. Ini dapat menggambarkan lingkungan, status rilis, tingkat aplikasi, atau identifikasi pelanggan. Ini mencegah tautan keras objek.

Anotasi

Anotasi digunakan untuk menambahkan bagasi atau metadata tak dikenal yang sewenang-wenang ke objek. Ini digunakan sebagai alat konfigurasi deklaratif.

Harus Dibaca: Kubernetes Vs. Docker: Perbedaan Utama yang Harus Anda Ketahui

Dapatkan gelar Rekayasa Perangkat Lunak dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Teknologi Kubernetes berkembang pesat, dan merupakan solusi hemat biaya untuk masa depan. Ini menawarkan stabilitas besar untuk aplikasi.

Semua konsep dasar arsitektur Kubernetes dan komponen Kubernetes dijelaskan dalam artikel ini.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Kubernetes, data besar, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan ketat, 9+ proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Persiapkan Karir Masa Depan

Daftar Sekarang untuk Program PG Eksekutif dalam Pengembangan Tumpukan Penuh