Kebutuhan Akan Orkestrasi
Di Seri 2, Anda telah berhasil mengemas aplikasi Anda ke dalam Image Docker dan mengelolanya secara lokal menggunakan Docker Compose. Namun, seiring pertumbuhan aplikasi, muncul masalah baru yang tidak dapat diselesaikan oleh Docker Compose, yaitu masalah skala dan keandalan di lingkungan produksi:
Skalabilitas: Bagaimana jika Anda tiba-tiba membutuhkan 10 instans kontainer web server Anda dalam hitungan detik?
Self-Healing: Bagaimana jika salah satu kontainer database Anda tiba-tiba crash? Siapa yang bertanggung jawab untuk mendeteksi kegagalan itu, menghapus kontainer yang gagal, dan meluncurkan kontainer baru secara otomatis?
Jaringan dan Penemuan Layanan (Service Discovery): Bagaimana kontainer A tahu alamat IP kontainer B yang dinamis?
Orkestrasi Kontainer adalah jawabannya. Ia adalah sistem otomatis untuk mengelola siklus hidup kontainer, termasuk deployment, penskalaan, jaringan, dan ketersediaan.
Kubernetes (sering disingkat K8s) adalah platform orkestrasi kontainer yang paling dominan dan diadopsi secara luas di industri. K8s adalah sistem sumber terbuka (open-source) yang dirancang untuk mengotomatisasi deployment, penskalaan, dan manajemen aplikasi yang terkontainerisasi. Artikel ini akan menjadi pintu gerbang Anda menuju dunia orkestrasi skala production.
🏛️ Arsitektur Kubernetes: Control Plane dan Worker Nodes
Kubernetes beroperasi sebagai cluster, yaitu sekumpulan mesin fisik atau virtual yang bekerja sama. Cluster K8s secara konseptual terbagi menjadi dua komponen utama: Control Plane (Master Node) dan Worker Nodes.
1. Control Plane (Master Node)
Control Plane adalah “otak” dari cluster. Komponen-komponennya bertanggung jawab untuk membuat keputusan global tentang cluster (misalnya, menjadwalkan Pod ke Node tertentu, mendeteksi dan merespons peristiwa).
| Komponen Control Plane | Fungsi Utama | Keterangan |
| kube-apiserver | Gerbang Depan (API) Cluster. | Satu-satunya komponen yang berinteraksi dengan pengguna (kubectl). Menyediakan endpoint REST API untuk semua operasi cluster. |
| etcd | Basis Data Kunci-Nilai Cluster. | Menyimpan semua data konfigurasi dan status cluster secara persisten. Sangat penting, harus dijaga ketersediaannya (Highly Available). |
| kube-scheduler | Penjadwal Tugas. | Memantau Pod yang baru dibuat tanpa Node yang ditetapkan, dan memilih Node terbaik untuk menjalankannya berdasarkan resource yang dibutuhkan dan kebijakan yang ada. |
| kube-controller-manager | Pengelola Status. | Menjalankan berbagai controller yang mengatur status cluster (misalnya, memastikan jumlah replicas sesuai yang diminta). |
2. Worker Nodes
Worker Node adalah mesin tempat kontainer aplikasi Anda benar-benar berjalan. Setiap Worker Node berisi komponen yang diperlukan untuk berkomunikasi dengan Control Plane dan menjalankan kontainer:
| Komponen Worker Node | Fungsi Utama | Keterangan |
| kubelet | Agen Node. | Bertanggung jawab untuk memastikan kontainer dalam Pod berjalan dan sehat. Ia berkomunikasi dengan Control Plane melalui kube-apiserver. |
| kube-proxy | Pengelola Jaringan. | Mengelola aturan jaringan pada Node untuk memungkinkan komunikasi dari dalam dan luar cluster (Load Balancing dan Service). |
| Container Runtime | Mesin Kontainer. | Perangkat lunak yang menjalankan kontainer (misalnya, Docker Engine, containerd, atau CRI-O). |
📦 Objek Dasar Kubernetes: Tulang Punggung Aplikasi
Kubernetes bekerja dengan konsep Objek—sebuah “catatan niat” yang menyatakan status ideal yang Anda inginkan untuk cluster Anda (misalnya, “Saya ingin ada 3 instans Nginx yang berjalan”). Control Plane akan bekerja tanpa henti untuk mencapai status tersebut.
1. Pods: Unit Komputasi Terkecil
Pod adalah unit komputasi terkecil dan paling dasar yang dapat Anda buat dan deploy di Kubernetes.
Definisi: Sebuah Pod adalah abstraksi dari aplikasi tunggal atau proses yang berjalan. Sebuah Pod dapat berisi satu atau lebih kontainer yang saling berbagi network namespace (alamat IP dan port).
Kehidupan: Pod bersifat sementara (ephemeral). Mereka tidak memiliki kemampuan self-healing yang melekat. Jika Pod mati, ia tidak akan restart dengan sendirinya; objek yang lebih tinggi yang harus menciptakannya kembali.
2. Deployment: Manajemen Status Ideal
Deployment adalah objek yang paling sering digunakan untuk menjalankan aplikasi stateless (tidak menyimpan data) di Kubernetes. Deployment menyediakan kemampuan deklaratif untuk deployment aplikasi.
Fungsi Utama: Deployment memastikan sejumlah replicas Pod yang ditentukan selalu berjalan. Jika sebuah Pod gagal, Deployment melalui ReplicaSet yang dikelolanya akan secara otomatis membuat Pod baru.
Rollout & Rollback: Deployment mengelola perubahan aplikasi (rollout) secara bertahap (rolling update) dan menyediakan mekanisme untuk kembali ke versi sebelumnya (rollback) jika ada masalah.
3. Service: Pintu Masuk yang Stabil
Karena Pods bersifat sementara dan alamat IP-nya selalu berubah, aplikasi membutuhkan alamat yang stabil untuk diakses. Di sinilah Service berperan.
Definisi: Service adalah lapisan abstraksi yang mendefinisikan sekumpulan Pods dan kebijakan untuk mengaksesnya. Service memberikan alamat IP yang stabil dan nama DNS yang tidak berubah.
Fungsi Load Balancing: Service secara otomatis berfungsi sebagai load balancer di depan Pods yang dikelolanya.
🔌 Tipe-Tipe Service Kubernetes
Terdapat empat tipe utama Service yang menentukan bagaimana aplikasi Anda diakses, baik dari dalam maupun luar cluster.
| Tipe Service | Akses Khas | Kapan Digunakan? |
| ClusterIP (Default) | Internal (In-Cluster). | Untuk komunikasi antar layanan (service-to-service), misalnya, web server yang terhubung ke database. |
| NodePort | Eksternal (External) melalui Node. | Untuk membuat layanan dapat diakses melalui port spesifik di setiap Worker Node (Node’s IP:NodePort). Umumnya untuk staging atau demo. |
| LoadBalancer | Eksternal (Integrasi Cloud). | Untuk mengekspos layanan melalui Cloud Provider’s Load Balancer (AWS ELB, GCP Load Balancing, dll.). Ideal untuk production. |
| ExternalName | Akses Layanan Eksternal. | Untuk memetakan Service K8s ke nama DNS eksternal (misalnya, database di luar cluster). |
💻 Penggunaan Dasar kubectl dan Manifest YAML
Interaksi utama dengan Control Plane dilakukan melalui command-line tool kubectl.
1. Manifest YAML
Meskipun Deployment dan Service dapat dibuat menggunakan perintah kubectl run atau kubectl expose, praktik terbaik di produksi adalah menggunakan file Manifest YAML yang bersifat deklaratif.
Contoh Manifest YAML (Deployment):
apiVersion: apps/v1
kind: Deployment # Tipe Objek
metadata:
name: web-deployment
spec:
replicas: 3 # Status Ideal: Ingin 3 Pod
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web-container
image: nginx:latest
ports:
- containerPort: 80
Perintah Deployment:
Code snippetkubectl apply -f web-deployment.yamlPerintah ini memberitahu Control Plane untuk membuat atau memperbarui objek agar sesuai dengan deskripsi YAML.
2. Perintah Kunci kubectl
| Perintah | Deskripsi | Contoh |
kubectl get | Melihat daftar resource yang ada. | kubectl get pods, kubectl get deploy |
kubectl describe | Melihat detail status resource tertentu. | kubectl describe pod web-app-xyz |
kubectl logs | Melihat log dari Kontainer/Pod. | kubectl logs web-app-xyz |
kubectl exec | Menjalankan perintah di dalam Kontainer. | kubectl exec -it web-app-xyz -- sh |
kubectl delete | Menghapus resource (termasuk Pods, Deployments, Services). | kubectl delete deployment web-deployment |
Matriks Perbandingan Objek Dasar Kubernetes
| Objek | Fungsi Utama | Sifat Dasar | Ketergantungan |
| Pod | Menjalankan Kontainer (Unit Eksekusi). | Sementara (Ephemeral), Tidak Self-Healing. | Kontainer dan Node. |
| Deployment | Mengelola Skalabilitas dan Rollout. | Permanen (Mendefinisikan Status Ideal). | ReplicaSet dan Pods. |
| Service | Menyediakan Akses Jaringan yang Stabil. | Permanen (Memberikan IP Statis). | Kumpulan Pods yang cocok dengan Selector. |
💻 Kesimpulan: Landasan Orkestrasi yang Kuat
Seri 3 telah membawa Anda dari server tunggal ke konsep Komputasi Terdistribusi yang diatur oleh Kubernetes. Anda kini memahami bahwa Kubernetes adalah sistem Control Loop yang terus berupaya menyamakan status cluster yang sebenarnya dengan status ideal yang Anda deklarasikan melalui objek-objek YAML.
Menguasai arsitektur (Control Plane dan Worker Nodes) dan objek dasar (Pods, Deployments, Services) adalah landasan mutlak. Tanpa objek-objek ini, Anda tidak dapat menjalankan aplikasi skala produksi yang andal. Langkah selanjutnya, Seri 4, akan berfokus pada cara mengonfigurasi cluster K8s untuk skenario dunia nyata, termasuk manajemen konfigurasi, Ingress, dan penskalaan otomatis.
Berikut adalah command esensial yang harus Anda jadikan panduan dalam Pengenalan Kubernetes:
# KUBERNETES ESSENTIALS SERI 3: OBJEK & ARSITEKTUR
# ----------------------------------------------------
# 1. Menerapkan Konfigurasi Deklaratif
kubectl apply -f [nama_manifest].yaml
# 2. Melihat Ringkasan Status Objek
kubectl get all
# 3. Mendapatkan Detail Kejadian dan Error
kubectl describe [pod/deploy/svc] [nama_objek]
# 4. Meluncurkan Shell di dalam Pod (untuk Debugging)
kubectl exec -it [nama_pod] -- bash
# 5. Menghapus Objek dari Cluster
kubectl delete deployment [nama_deployment]
# ----------------------------------------------------
# SELANJUTNYA: Konfigurasi Produksi, Jaringan, dan Skalabilitas di Seri 4.
Anda kini telah siap untuk menguasai aspek administrasi dan konfigurasi produksi di Kubernetes.

