Back to IF4031 Arsitektur Aplikasi Terdistribusi
Arsitektur Kubernetes: Control Plane dan Node
Questions/Cues
Apa arsitektur umum K8s?
Apa itu Control Plane?
Apa fungsi
kube-apiserver?Apa fungsi
etcd?Apa tugas
kube-scheduler?Apa itu
kube-controller-manager?Apa itu Node?
Apa tugas
kubelet?Apa fungsi
kube-proxy?Apa itu
container runtime?Apa saja Addons umum?
Reference Points
- 25-extra-IF4031-24-2024-Kubernetes.pdf (hlm. 10-18)
Arsitektur Umum Kubernetes
Sebuah cluster Kubernetes terdiri dari dua jenis komponen utama: Control Plane dan Node.
Control Plane: Bertindak sebagai “otak” dari cluster. Ia membuat keputusan global tentang cluster (misalnya, penjadwalan) serta mendeteksi dan merespons peristiwa di cluster.
Node: Mesin pekerja (VM atau fisik) di mana kontainer aplikasi sebenarnya dijalankan. Setiap node dikelola oleh Control Plane.
Komponen Control Plane
Komponen-komponen ini bisa berjalan di satu mesin (master node) atau direplikasi untuk ketersediaan tinggi (high availability).
1.
kube-apiserverIni adalah “pintu gerbang” ke Control Plane. Semua komunikasi, baik dari pengguna (melalui kubectl), komponen cluster lain, atau aplikasi eksternal, harus melewati API server. Ia mengekspos Kubernetes API dan bertanggung jawab untuk memvalidasi dan memproses permintaan.
2.
etcdSebuah key-value store terdistribusi yang konsisten dan memiliki ketersediaan tinggi. etcd digunakan sebagai “sumber kebenaran” tunggal untuk menyimpan semua data dan konfigurasi cluster Kubernetes, termasuk state dari setiap objek.
3.
kube-schedulerKomponen ini bertugas untuk menjadwalkan Pod. Ia memonitor Pod yang baru dibuat dan belum dialokasikan ke node manapun. Berdasarkan kebutuhan sumber daya Pod (CPU, memori), constraints, dan kebijakan lainnya, scheduler akan memilih node terbaik bagi Pod tersebut untuk dijalankan.
4.
kube-controller-managerIni adalah komponen yang menjalankan berbagai proses controller. Secara logis, setiap controller adalah proses terpisah, tetapi untuk mengurangi kompleksitas, mereka semua dikompilasi menjadi satu biner dan berjalan sebagai satu proses. Beberapa controller penting:
Node Controller: Memonitor kesehatan node dan bereaksi jika node mati.
Job Controller: Menjalankan tugas-tugas sekali jalan (one-off tasks) dengan membuat Pod.
Endpoints Controller: Menghubungkan objek Service dengan Pod.
Service Account & Token Controllers: Membuat akun default dan token API untuk namespace baru.
cloud-controller-manager(Opsional)Komponen ini menjalankan controller yang spesifik untuk penyedia layanan cloud tertentu (AWS, GCP, Azure). Ini memungkinkan cluster Kubernetes untuk berinteraksi dengan API cloud untuk mengelola load balancer, storage volumes, dll.
Komponen Node
Setiap node pekerja menjalankan komponen-komponen berikut:
1.
kubeletIni adalah agent utama yang berjalan di setiap node. kubelet berkomunikasi dengan Control Plane dan memastikan bahwa kontainer yang didefinisikan dalam Pod berjalan dan sehat di node-nya.
2.
kube-proxySebuah proxy jaringan yang berjalan di setiap node. kube-proxy bertanggung jawab untuk mengelola aturan jaringan pada node, memungkinkan komunikasi jaringan ke Pod Anda dari dalam atau luar cluster. Ia mengimplementasikan sebagian dari objek Service Kubernetes.
3. Container Runtime
Ini adalah perangkat lunak yang bertanggung jawab untuk menjalankan kontainer. Kubernetes mendukung berbagai runtime yang sesuai dengan Container Runtime Interface (CRI), seperti containerd atau CRI-O.
Addons
Addons adalah Pod dan Service yang mengimplementasikan fitur-fitur cluster.
Cluster DNS: Layanan DNS internal untuk cluster (misalnya, CoreDNS).
Dashboard: Antarmuka pengguna berbasis web untuk mengelola cluster.
Container Resource Monitoring: Mengumpulkan dan menyimpan metrik tentang kontainer.
Cluster-level Logging: Mekanisme untuk menyimpan log kontainer ke penyimpanan pusat.
Arsitektur Kubernetes terdiri dari Control Plane sebagai “otak” yang mengelola state cluster melalui komponen seperti
kube-apiserver,etcd,scheduler, dancontroller-manager, serta sekumpulan Node pekerja yang menjalankan aplikasi pengguna. Setiap Node dikoordinasikan oleh agentkubeletdankube-proxyuntuk memastikan Pod berjalan sesuai spesifikasi yang ditetapkan oleh Control Plane, menciptakan sebuah sistem terdistribusi yang andal dan dapat melakukan self-healing.
Additional Information
Pendalaman: Kubelet, CRI, dan CNI
kubeletadalah komponen yang sangat penting. Ia tidak hanya memulai dan menghentikan kontainer, tetapi juga bertindak sebagai jembatan ke dua abstraksi krusial lainnya:
Container Runtime Interface (CRI): Ini adalah API plugin yang memungkinkan
kubeletuntuk menggunakan berbagai jenis container runtime tanpa harus meng-kompilasi ulang. Selama runtime (seperticontainerd) mengimplementasikan CRI,kubeletdapat berkomunikasi dengannya untuk mengelola siklus hidup kontainer. Ini yang membuat Kubernetes bisa lepas dari ketergantungan historisnya pada Docker.Container Network Interface (CNI): Ini adalah spesifikasi plugin untuk mengkonfigurasi jaringan kontainer. Ketika
kubeletmembuat sebuah Pod, ia akan memanggil plugin CNI yang terpasang (seperti Calico, Flannel, atau Weave Net) untuk menyiapkan network namespace Pod, memberikannya alamat IP, dan mengatur routing yang diperlukan agar Pod tersebut bisa berkomunikasi di dalam cluster.Pendalaman: Etcd dan Konsistensi
etcdmenggunakan algoritma konsensus Raft untuk memastikan bahwa setiap penulisan data direplikasi secara konsisten di beberapa node. Ini sangat penting karenaetcdmenyimpan seluruh state dari cluster. Kehilangan dataetcdberarti kehilangan seluruh state dan konfigurasi cluster. Oleh karena itu, mem-backupetcdsecara teratur adalah tugas operasional yang sangat krusial dalam mengelola cluster Kubernetes.