Komponen Kubernetes
Ketika Anda mendeploy Kubernetes, Anda akan mendapatkan sebuah klaster.
Sebuah klaster Kubernetes terdiri dari sejumlah mesin pekerja, yang disebut node, yang menjalankan aplikasi yang terkontainerisasi. Setiap klaster memiliki setidaknya satu node pekerja.
Node pekerja tersebut menjalankan Pod yang merupakan komponen dari beban kerja aplikasi. Plane kontrol mengelola node pekerja dan Pod di dalam klaster. Di lingkungan produksi, plane kontrol biasanya berjalan di beberapa komputer dan klaster biasanya menjalankan beberapa node, memberikan toleransi terhadap kegagalan dan ketersediaan yang tinggi
Komponen Control Plane
Komponen-komponen dari plane kontrol membuat keputusan global tentang klaster (misalnya, penjadwalan), serta mendeteksi dan merespons peristiwa-peristiwa klaster (misalnya, memulai pod baru ketika nilai replika dalam penyebaran tidak terpenuhi).
kube-apiserver
Server API adalah komponen dari plane kontrol Kubernetes yang mengekspos API Kubernetes. Server API adalah frontend untuk plane kontrol Kubernetes.
Implementasi utama dari server API Kubernetes adalah kube-apiserver. kube-apiserver dirancang untuk dapat meluas secara horizontal, yaitu dengan mendeploy lebih banyak instansi. Anda dapat menjalankan beberapa instansi kube-apiserver dan menyeimbangkan lalu lintas antara instansi-instansi tersebut.
etcd
Penyimpanan nilai kunci yang konsisten dan sangat tersedia yang digunakan sebagai penyimpanan belakang Kubernetes untuk semua data klaster.
Jika klaster Kubernetes Anda menggunakan etcd sebagai penyimpanan belakang, pastikan Anda memiliki rencana cadangan untuk data tersebut.
kube-scheduler
Komponen plane kontrol yang memantau Pod yang baru dibuat tanpa node yang ditugaskan, dan memilih node tempat mereka akan dijalankan.
Faktor-faktor yang diperhitungkan dalam keputusan penjadwalan termasuk: persyaratan sumber daya individu dan kolektif, kendala perangkat keras/perangkat lunak/policy, spesifikasi afinitas dan anti-afinitas, lokalitas data, gangguan antar-beban kerja, dan batas waktu.
kube-controller-manager
Komponen plane kontrol yang menjalankan proses controller.
Secara logis, setiap controller adalah proses terpisah, tetapi untuk mengurangi kompleksitas, mereka semua dikompilasi ke dalam satu binary tunggal dan dijalankan dalam satu proses.
Ada banyak jenis controller yang berbeda. Beberapa contohnya adalah:
Node controller: Bertanggung jawab untuk mendeteksi dan merespons ketika node-node mati.
Job controller: Memantau objek Job yang mewakili tugas-tugas satu kali, lalu membuat Pod untuk menjalankan tugas-tugas tersebut hingga selesai.
EndpointSlice controller: Mengisi objek EndpointSlice (untuk menyediakan tautan antara Layanan dan Pod).
ServiceAccount controller: Membuat Akun Layanan default untuk namespace baru.
Daftar di atas tidaklah lengkap.
cloud-controller-manager
Komponen plane kontrol Kubernetes yang menyematkan logika controller yang spesifik untuk cloud. Cloud controller manager memungkinkan Anda menghubungkan kluster Anda ke API penyedia cloud Anda, dan memisahkan komponen-komponen yang berinteraksi dengan platform cloud tersebut dari komponen-komponen yang hanya berinteraksi dengan kluster Anda.
Cloud-controller-manager hanya menjalankan controller yang khusus untuk penyedia cloud Anda. Jika Anda menjalankan Kubernetes di lokasi sendiri atau dalam lingkungan pembelajaran di komputer Anda sendiri, kluster tersebut tidak akan memiliki cloud controller manager.
Seperti dengan kube-controller-manager, cloud-controller-manager menggabungkan beberapa loop kontrol yang secara logis independen ke dalam satu binary tunggal yang Anda jalankan sebagai satu proses. Anda dapat meluas secara horizontal (menjalankan lebih dari satu salinan) untuk meningkatkan kinerja atau membantu mengatasi kegagalan.
Komponen Node
Komponen-komponen Node berjalan pada setiap node, menjaga Pod yang sedang berjalan dan menyediakan lingkungan runtime Kubernetes.
kubelet
Sebuah agen yang berjalan pada setiap node dalam klaster. Ini memastikan bahwa kontainer berjalan dalam sebuah Pod.
Kubelet mengambil serangkaian PodSpec yang diberikan melalui berbagai mekanisme dan memastikan bahwa kontainer yang dijelaskan dalam PodSpec tersebut berjalan dan sehat. Kubelet tidak mengelola kontainer yang tidak dibuat oleh Kubernetes.
kube-proxy
kube-proxy adalah proxy jaringan yang berjalan pada setiap node dalam kluster Anda, mengimplementasikan sebagian dari konsep Layanan Kubernetes.
kube-proxy menjaga aturan jaringan pada node. Aturan jaringan ini memungkinkan komunikasi jaringan ke Pod Anda dari sesi jaringan di dalam atau di luar kluster Anda.
kube-proxy menggunakan lapisan penyaringan paket sistem operasi jika ada dan tersedia. Selain itu, kube-proxy mengalihkan lalu lintas itu sendiri.
Container runtime
Komponen mendasar yang memungkinkan Kubernetes menjalankan kontainer dengan efektif. Ini bertanggung jawab untuk mengelola eksekusi dan siklus hidup kontainer dalam lingkungan Kubernetes.
Kubernetes mendukung runtime kontainer seperti containerd, CRI-O, dan implementasi Kubernetes CRI (Container Runtime Interface) lainnya.
AddOns
Addon menggunakan sumber daya Kubernetes (DaemonSet, Deployment, dll.) untuk menerapkan fitur-fitur klaster. Karena ini menyediakan fitur tingkat klaster, sumber daya ber-namespace untuk addon seharusnya berada dalam namespace kube-system.
Apa saja AddOns-nya?
DNS
Web UI
Container Resource Monitoring
Cluster-level Logging
Network Plugins