Melangkah ke Skala Produksi: Pengenalan dan Arsitektur Fundamental Sistem Orkestrasi Kubernetes

Pahami mengapa orkestrasi diperlukan untuk aplikasi skala besar, selami arsitektur Kubernetes yang kompleks (Master dan Worker Node), dan kuasai objek-objek dasar yang membentuk tulang punggung cluster, seperti Pods, Deployments, dan Services, untuk membawa kontainer Anda ke tingkat enterprise.

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:

  1. Skalabilitas: Bagaimana jika Anda tiba-tiba membutuhkan 10 instans kontainer web server Anda dalam hitungan detik?

  2. 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?

  3. 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 PlaneFungsi UtamaKeterangan
kube-apiserverGerbang Depan (API) Cluster.Satu-satunya komponen yang berinteraksi dengan pengguna (kubectl). Menyediakan endpoint REST API untuk semua operasi cluster.
etcdBasis Data Kunci-Nilai Cluster.Menyimpan semua data konfigurasi dan status cluster secara persisten. Sangat penting, harus dijaga ketersediaannya (Highly Available).
kube-schedulerPenjadwal 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-managerPengelola 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 NodeFungsi UtamaKeterangan
kubeletAgen Node.Bertanggung jawab untuk memastikan kontainer dalam Pod berjalan dan sehat. Ia berkomunikasi dengan Control Plane melalui kube-apiserver.
kube-proxyPengelola Jaringan.Mengelola aturan jaringan pada Node untuk memungkinkan komunikasi dari dalam dan luar cluster (Load Balancing dan Service).
Container RuntimeMesin 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 ServiceAkses KhasKapan Digunakan?
ClusterIP (Default)Internal (In-Cluster).Untuk komunikasi antar layanan (service-to-service), misalnya, web server yang terhubung ke database.
NodePortEksternal (External) melalui Node.Untuk membuat layanan dapat diakses melalui port spesifik di setiap Worker Node (Node’s IP:NodePort). Umumnya untuk staging atau demo.
LoadBalancerEksternal (Integrasi Cloud).Untuk mengekspos layanan melalui Cloud Provider’s Load Balancer (AWS ELB, GCP Load Balancing, dll.). Ideal untuk production.
ExternalNameAkses 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):

YAML
 
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 snippet
 
kubectl apply -f web-deployment.yaml

Perintah ini memberitahu Control Plane untuk membuat atau memperbarui objek agar sesuai dengan deskripsi YAML.

 

2. Perintah Kunci kubectl

 

PerintahDeskripsiContoh
kubectl getMelihat daftar resource yang ada.kubectl get pods, kubectl get deploy
kubectl describeMelihat detail status resource tertentu.kubectl describe pod web-app-xyz
kubectl logsMelihat log dari Kontainer/Pod.kubectl logs web-app-xyz
kubectl execMenjalankan perintah di dalam Kontainer.kubectl exec -it web-app-xyz -- sh
kubectl deleteMenghapus resource (termasuk Pods, Deployments, Services).kubectl delete deployment web-deployment

 

Matriks Perbandingan Objek Dasar Kubernetes

 

ObjekFungsi UtamaSifat DasarKetergantungan
PodMenjalankan Kontainer (Unit Eksekusi).Sementara (Ephemeral), Tidak Self-Healing.Kontainer dan Node.
DeploymentMengelola Skalabilitas dan Rollout.Permanen (Mendefinisikan Status Ideal).ReplicaSet dan Pods.
ServiceMenyediakan 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:

Bash
 
# 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.

 

Share the Post:

Related Posts