Menguasai Kubernetes di Era Cloud Native: Panduan Terlengkap Berdasarkan "Kubernetes Pocket Guide"
Di dunia modern pengembangan perangkat lunak, kontainerisasi telah menjadi standar industri. Namun, mengelola ratusan bahkan ribuan kontainer secara manual adalah hal yang mustahil. Di sinilah Kubernetes (K8s) hadir sebagai penyelamat. Berdasarkan referensi terbaru dari "Kubernetes Pocket Guide" oleh Dr. Ranjith Shepur, artikel ini akan membedah secara tuntas segala hal yang perlu Anda ketahui tentang Kubernetes versi 1.28 ke atas.
1. Mengenal Filosofi Kubernetes
Kubernetes bukan sekadar alat deployment. Ia adalah platform orkestrasi yang dirancang untuk otomatisasi, skalabilitas, dan ketahanan (resilience). Filosofi utamanya adalah Declarative Management, di mana kita memberi tahu Kubernetes "status akhir" yang kita inginkan (misalnya: "saya ingin 5 replika aplikasi A"), dan Kubernetes akan bekerja keras memastikannya tetap seperti itu.
2. Bedah Arsitektur: Otak dan Otot di Balik Layar
Memahami Kubernetes dimulai dari memahami arsitektur Master-Worker.
A. Control Plane (Otak Klaster)
Control Plane bertanggung jawab atas pengambilan keputusan global tentang klaster.
kube-apiserver: Ini adalah pintu gerbang utama. Semua instruksi, baik dari pengguna melalui
kubectlatau dari komponen internal, harus melalui API server.etcd: Bayangkan ini sebagai buku log rahasia. Semua data konfigurasi dan status klaster disimpan di sini dalam format key-value yang sangat aman dan terdistribusi.
kube-scheduler: Komponen cerdas yang melihat Pod baru dan memutuskan di Node mana Pod tersebut harus diletakkan berdasarkan ketersediaan RAM/CPU.
kube-controller-manager: Penjaga status. Jika Anda meminta 3 replika dan satu mati, komponen inilah yang menyadarinya dan memerintahkan pembuatan yang baru.
B. Worker Node (Unit Pelaksana)
Node adalah mesin (virtual atau fisik) tempat aplikasi Anda benar-benar berjalan.
kubelet: Agen yang memastikan kontainer berjalan di dalam Pod sesuai instruksi dari Master.
kube-proxy: Polisi lalu lintas jaringan yang memastikan setiap Pod bisa berkomunikasi satu sama lain atau dengan dunia luar.
Container Runtime: Mesin penggerak kontainer (seperti containerd atau CRI-O).
3. Abstraksi Beban Kerja (Workloads)
Kubernetes tidak menjalankan kontainer secara langsung, melainkan melalui objek abstraksi:
Pods: Unit terkecil. Satu Pod bisa berisi satu atau lebih kontainer yang berbagi alamat IP yang sama.
Deployments: Pilihan utama untuk aplikasi stateless (seperti web server). Ia memungkinkan kita melakukan rolling updates tanpa downtime.
StatefulSets: Digunakan untuk aplikasi yang membutuhkan identitas unik, seperti database (MySQL, MongoDB). Setiap replika memiliki nama dan penyimpanan yang tetap.
DaemonSets: Jika Anda ingin menjalankan agen log atau monitoring di SETIAP node yang ada di klaster, DaemonSet adalah solusinya.
Jobs & CronJobs: Untuk tugas yang berjalan sekali lalu mati, atau tugas rutin yang dijadwalkan secara otomatis.
4. Strategi Networking: Menghubungkan yang Terpisah
Jaringan dalam Kubernetes sering dianggap rumit, namun panduan ini menyederhanakannya menjadi beberapa konsep kunci:
Service: Memberikan alamat IP tetap untuk sekelompok Pod.
ClusterIP: Untuk komunikasi internal antar aplikasi.
NodePort: Membuka port pada IP Node untuk akses luar.
LoadBalancer: Menghubungkan klaster ke penyedia Cloud Load Balancer (AWS/GCP/Azure).
Ingress: Bertindak sebagai Smart Gateway atau Reverse Proxy (seperti Nginx) yang mengatur rute trafik HTTP/HTTPS berdasarkan nama domain atau path URL.
5. Keamanan Tingkat Tinggi (Security & RBAC)
Dalam ekosistem multi-tenant, keamanan adalah harga mati.
RBAC (Role-Based Access Control): Menggunakan prinsip least privilege. Kita memberikan izin hanya kepada apa yang dibutuhkan oleh pengguna atau aplikasi.
Secrets: Tempat menyimpan password, token API, dan sertifikat secara terpisah dari kode aplikasi.
Network Policies: Seperti firewall internal. Anda bisa mengatur agar Pod "Frontend" hanya bisa bicara ke "Backend", dan melarang akses langsung ke "Database".
6. Manajemen Penyimpanan (Storage)
Kubernetes menggunakan konsep yang memisahkan antara "permintaan" dan "penyediaan":
Persistent Volume (PV): Kapasitas penyimpanan nyata yang disediakan oleh admin.
Persistent Volume Claim (PVC): Tiket atau permintaan dari pengembang untuk mendapatkan penyimpanan tersebut.
CSI (Container Storage Interface): Memungkinkan Kubernetes terhubung dengan berbagai penyedia penyimpanan seperti AWS EBS, Google Persistent Disk, atau solusi on-premise seperti Ceph.
7. Observabilitas: Probes dan Monitoring
Agar aplikasi tetap sehat, Kubernetes menggunakan mekanisne pengecekan otomatis:
Liveness Probe: Jika pengecekan gagal, Kubernetes akan me-restart kontainer.
Readiness Probe: Jika gagal, trafik tidak akan dikirim ke Pod tersebut sampai ia siap kembali.
Startup Probe: Digunakan untuk aplikasi berat yang membutuhkan waktu lama untuk booting.
8. Mengapa v1.28+ Penting?
Versi terbaru membawa stabilitas pada fitur-fitur seperti Sidecar Containers (native support), peningkatan keamanan pada Pod Scheduling, dan efisiensi pada API Priority and Fairness. Pembaruan ini memastikan klaster Anda lebih hemat sumber daya dan lebih mudah dikelola.
9. Kesimpulan: Langkah Selanjutnya untuk DevOps
Kubernetes bukan sekadar tren, melainkan standar baru dalam manajemen infrastruktur. Dengan memahami komponen inti seperti yang dijabarkan dalam Kubernetes Pocket Guide, Anda telah memiliki fondasi kuat untuk membangun sistem yang scalable dan fault-tolerant.
Tips untuk Pemula:
Mulailah dengan Minikube atau Kind di komputer lokal.
Pelajari penulisan file YAML yang bersih.
Pahami cara kerja
kubectlsebagai senjata utama Anda.
