Di episode ini kita akan mengenal konsep dan arsitektur yang ada pada Kubernetes Cluster, mulai dari Control Plane (Master Node) dan Data Plane (Worker Node)

Di episode 1 sebelumnya, kita sudah membahas cukup panjang terkait evolusi dari infrastruktur, arsitektur, deployment aplikasi, hingga munculnya teknologi bernama Kubernetes. Nah di episode 2 kali ini, kita akan mulai masuk membahas Kubernetes secara lebih dalam. Di episode ini kita akan membahas tentang arsitektur internal Kubernetes, mengenal apa saja komponen penting di dalamnya, dan bagaimana mereka saling berinteraksi.
Mengapa kita harus memahami arsitektur Kubernetes ini? Sebelum mulai menggunakan Kubernetes untuk menjalankan aplikasi, kita perlu paham terlebih dahulu bagaimana sistem tersebut bisa bekerja. Dengan memahami arsitekturnya, kita akan lebih mudah dalam beberapa hal berikut ini:
Catatan: Kalian tidak perlu pusing dan bingung terlebih dahulu untuk memahami gambar arsitektur Kubernetes di bawah ini. Tenang saja, tidak perlu merasa ter-intimidasi dengan banyaknya istilah-istilah di gambar tersebut. Kita akan coba jelaskan satu persatu.
Arsitektur KubernetesKubernetes bekerja dalam cluster, yang terdiri dari beberapa node. Dalam arsitektur ini ada dua peran besar, yaitu:
Node ini adalah yang menjadi pusat kendali dari Kubernetes cluster, sehingga semua interaksi ke Kubernetes cluster akan melalui node ini. Terdapat beberapa komponen yang ada di dalam Master Node, diantaranya adalah sebagai berikut:
Komponen ini adalah sebagai gerbang utama atau titik masuk utama semua perintah yang dikirim ke Kubernetes cluster, interkasi ke dalam Kubernetes cluster melalui API Server bisa melalui berbagai macam cara, diantaranya adalah:
Komponen ini menyediakan endpoint REST API untuk mengatur komunikasi antar komponennya.
Komponen ini digunakan sebagai penyimpanan data atau database dari konfigurasi Kubernetes cluster, penyimpanan data yang digunakan oleh etcd adalah menggunakan key-value store yang konsisten dan highly-available. Semua informasi seperti status dan konfigurasi disimpan di sini (misalnya seperti daftar Pod, Service, dan sebagainya.)
Komponen ini adalah yang menentukan di node mana pod (container) akan dijalankan, scheduler ini akan menentukan berdasarkan aturan-aturan yang telah ditetapkan seperti berdasarkan Resource, Policy, Namespace, dan sebagainya.
Komponen ini bertugas untuk melakukan kontrol terhadap seluruh Kubernetes cluster, terutama yang Worker Node. Sebagai contoh kita mempunyai lebih dari satu Worker Node, nah itu tidak mungkin akan berjalan sendiri-sendiri, oleh karena itu perlu komponen yang mengatur atau mengelola nya, nah komponen controller manager inilah yang melakukan hal tersebut. Komponen ini mengelola beberapa controller, diantaranya adalah Node Controller, ReplicaSet Controller, dan sebagainya.
Sama hal nya seperti komponen Controller Manager, namun komponen ini khusus untuk node yang di deploy pada Cloud Provider seperti AWS, GCP, dan Azure yang dimana menyediakan Cloud Provider API. Sehingga kita bisa hubungkan antara Kubernetes cluster yang ada di on-premise dengan yang ada di Cloud Provider.
Node ini adalah tempat dimana aplikasi kita dijalankan, aplikasi tersebut dalam bentuk pod (container) yang kita deploy ke dalam Kubernetes cluster. Terdapat beberapa komponen yang ada di dalam Worker Node, diantaranya adalah sebagai berikut:
Komponen ini berfungsi sebagai agent yang berjalan di setiap node, dimana tugas nya adalah menjalankan perintah yang dikirim dari komponen API server yang ada di Master Node. Sehingga komponen ini yang menjadi jembatan antara Master Node dan setiap Worker Node nya yang ada di Kubernetes Cluster.
Komponen ini adalah yang mengatur seputar aturan jaringan di setiap node nya, dimana tugas nya adalah seperti melakukan load balancing, port forward, firewall, dan sebagainya terhadap pod.
Komponen ini adalah engine yang digunakan untuk menjalankan container, Kubernetes sendiri mendukung banyak jenis container runtime, seperti Docker / Containerd, CRI-O, dan sebagainya. Kubernetes hanya mengelola container melalui Container Runtime Interface (CRI).
Komponen ini adalah komponen terkecil yang ada di Kubernetes, komponen ini bisa berisi satu atau lebih container yang saling berbagi IP Address dan Storage.
Terdapat objects-objects atau komponen lain yang bersifat opsional (bukan core concept) dari Kubernetes cluster, contohnya adalah seperti Namespace, Deployment, Cronjob, Secret, Ingress, Service, dan sebagainya.
Setelah mengetahui konsep dan arsitektur Kubernetes di atas, kalian pasti bingung bagaimana developer melakukan deployment ke Kubernetes cluster bukan? Dimana banyak sekali komponen di dalamnya, oleh karena itu, agar lebih terbayang bagaimana alur kerja sederhana deployment ke Kubernetes cluster adalah sebagai berikut:
API Server, misalnya melalui kubectl dengan perintah seperti:kubectl apply -f deployment.yamlAPI Server mencatat ke komponen etcd dan meneruskan perintah ke komponen Scheduler.Scheduler menentukan Worker Node terbaik untuk menjalankan Pod.Kubelet di Worker Node yang dipilih akan menerima perintah dan menjalankan Pod melalui Container Runtime.Kube-proxy akan mengatur seputar networking agar Pod tersebut bisa diakses dari luar (biasanya melalui objects Service).Kubernetes adalah sistem yang cukup kompleks, tapi jika kita pecah menjadi komponen-komponen kecil, kita bisa memahaminya dengan lebih mudah. Memahami arsitektur ini adalah pondasi yang sangat penting sebelum masuk ke konsep lanjutan seperti Service, Deployment, Ingress, ReplicaSet, dan sebagainya.
Bagaimana episode 2 kali ini, apakah sudah mulai pusing memahami arsitektur Kubernetes 😅? It's oke untuk pertama kali melihat dan mencoba memahami arsitektur dari Kubernetes cluster memang cukup membingungkan, namun percayalah dengan seiring nya waktu dan banyak nya latihan akan membuat kerumitan tersebut menjadi hal yang kecil atau mudah.
Nah agar kita bisa hands-on praktek langsung membuat Kubernetes cluster, di episode 3 selanjutnya, kita akan bahas terkait instalasi Kubernetes cluster, baik itu Control Plane (Master Node) dan Data Plane (Worker Node). Pastikan Tools software atau hardware yang sudah dijelaskan di episode 0 sudah disiapkan, sehingga kita bisa langsung melakukan instalasi Kubernetes cluster nya.