
Panduan praktis berbasis skenario dalam format tanya jawab sekaligus materi persiapan ujian CKA. Berisi 75+ pertanyaan yang membahas fondasi → arsitektur → networking → security → troubleshooting → skenario dunia nyata. Untuk berbagai posisi seperti SRE • DevOps • Kubernetes Admin • Platform Engineer
Selamat datang di bagian pertama dari 12 bagian Panduan Lengkap Persiapan Wawancara Kubernetes. Kita akan memulai dari fondasi paling penting: memahami konsep dasar Kubernetes dan bagaimana komponen-komponen utamanya bekerja bersama dalam mengelola aplikasi berbasis container.
Pada bagian ini, kita akan membahas Pod, Node, Control Plane, etcd, kubelet, kube-proxy, Namespace, label, selector, hingga konsep desired state dan reconciliation loop. Pemahaman ini akan menjadi bekal penting sebelum masuk ke pembahasan yang lebih kompleks pada bagian-bagian berikutnya
Kubernetes (K8s) adalah sebuah platform orkestrasi container open-source yang bertujuan untuk mengotomatisasi deployment, scaling, dan pengelolaan aplikasi berbasis container di dalam sebuah cluster yang terdiri dari banyak machine/server.
Pembahasan lebih dalam: Sebelum Kubernetes, menjalankan container di production berarti harus menangani berbagai hal secara manual:
Kubernetes menyelesaikan semua kebutuhan tersebut secara declarative. Kita cukup mendefinisikan apa yang diinginkan, contohnya “3 replikasi dari aplikasi web yang saya miliki”. Kubernetes akan terus bekerja agar kondisi aktual sesuai dengan apa yang diinginkan tersebut. Konsep ini disebut declarative model dengan reconciliation loop.
Tujuan interviewer: Apakah kamu mengerti mengapa Kubernetes dibutuhkan, bukan hanya apa yang dapat dilakukannya?
A Pod adalah bagian/unit terkecil yang dapat di-deploy di Kubernetes — wadah untuk satu atau beberapa container yang saling terkait erat dan berbagi network namespace yang sama (IP + port space) and storage volumes.
Pembahasan lebih dalam:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80Tujuan interviewer: Banyak kandidat yang masih keliru membedakan “container” dan “Pod”. Mampu menjelaskan perbedaannya dengan jelas menunjukkan pemahaman Kubernetes yang lebih baik.
Hanya ketika container memiliki keterkaitan yang sangat erat dan mereka harus saling berbagi network, storage, dan lifecycle — biasanya menggunakan pola sidecar, ambassador, dan adapter.
Pola:
Anti-pattern: Menjalankan web server dan database dalam Pod yang sama. Keduanya memiliki lifecycle dan kebutuhan scaling yang berbeda, sehingga sebaiknya dijalankan dalam Deployment yang terpisah.
Kubernetes memiliki dua komponen utama: Control Plane (master) dan Worker Node (eksekutor). Control plane menentukan apa yang harus dijalankan, sedangkan Worker node menjalankan workload tersebut.
Komponen Peran
kube-apiserver Pintu masuk utama kedalam cluster. Semua proses baca/tulis harus melalui komponen ini.
etcd Penyimpanan key-value terdistribusi yang menyimpan seluruh status cluster.
kube-scheduler Menentukan node mana yang harus menjalankan Pod baru.
kube-controller-manager Menjalankan reconciliation loop (ReplicaSet, Node, Job controller).
cloud-controller-manager Berkomunikasi dengan API penyedia cloud (LBs, volume).Komponen Peran
kubelet Agen di setiap node; berkomunikasi dengan API server, menjalankan kontainer via CRI.
kube-proxy Mengarahkan aturan jaringan untuk lalu lintas Service (iptables/IPVS).
Container Runtime containerd, CRI-O — yang benar-benar menjalankan kontainer.kubectl → API server (authN, authZ, validation).etcd adalah penyimpanan key-value terdistribusi yang konsisten dan menyimpan seluruh status dari cluster Kubernetes, seperti status setiap objek, status yang diinginkan, serta status saat ini.
Pembahasan lebih dalam:
etcdctl snapshot save.ETCDCTL_API=3 etcdctl snapshot save snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.keyTujuan interviewer: Merupakan topik hangat dalam ujian CKA. Mereka ingin mendengar kata kunci “Raft”, “jumlah ganjil”, “backup”, dan “encryption at rest”.
kube-scheduler memantau Pod yang belum mendapatkan node (spec.nodeName kosong) dan memilih node terbaik untuk Pod tersebut dalam dua tahap: filtering and scoring.
Node dengan skor tertinggi akan dipilih. Scheduler kemudian menuliskan spec.nodeName kembali melalui API server. Selanjutnya kubelet pada node tersebut akan mengambil alih..
nodeSelector — persyaratan mutlaknodeAffinity — preferensi fleksibel atau mutlakpodAffinity / podAntiAffinity — penempatkan Pod berdekatan atau berjauhan relatif terhadap Pod laintaints (pada node) + tolerations (pada Pods) — mencegah Pod ditempatkan di node tertentutopologySpreadConstraints — menyebarkan beban secara merata di seluruh zona/nodepriorityClassName — memungkinkan Pod penting menyela (preempt) Pod lainnyakubelet adalah sebuah agen pada node yang menerima PodSpec dari API server dan memastikan container yang didefinisikan benar-benar berjalan dan dalam kondisi sehat pada node tersebut.
Jika kubelet pada sebuah node tidak berjalan atau mati, setelah melewati grace period, status node akan berubah menjadi NotReady, dan controller akan menjadwalkan ulang Pod dari node tersebut ke node lain.
kube-proxy berjalan di setiap node dan mengonfigurasi kernel Linux (melalui iptables atau IPVS) sehingga lalu lintas ke IP virtual Service diteruskan ke salah satu Pod di belakangnya.
Ketika sebuah Service dibuat, setiap kube-proxy di dalam cluster akan mendeteksi perubahan tersebut dan memperbarui aturan networking pada node masing-masing. Inilah yang memungkinkan setiap Pod mengakses Service melalui ClusterIP dari mana saja di dalam cluster.
Namespace adalah partisi logis di dalam cluster yang digunakan untuk mengelompokkan resource dan menerapkan isolasi pada setiap kelompok, seperti RBAC, resource quota, dan network policy.
default — tempat object dibuat jika Anda tidak menentukan namespacekube-system — digunakan untuk komponen sistem Kuberneteskube-public — digunakan untuk data yang dapat diakses secara publik di dalam clusterkube-node-lease — – digunakan untuk menyimpan informasi heartbeat node melalui mekanisme leaseKita mendefinisikan apa yang diinginkan (desired state) dalam YAML. Kubernetes controllers secara terus-menerus membandingkan desired state dengan current state and melakukan tindakan untuk menyelaraskan perbedaannya. Inilah filosofi utama desain Kubernetes.
Contoh: Anda mendefinisikan replicas: 3. Kemudian, sebuah node mengalami kegagalan (mati) sehingga satu Pod hilang. ReplicaSet controller mendeteksi bahwa current state (2) ≠ desired state (3), lalu secara otomatis membuat Pod baru. Tidak diperlukan tindakan manual.
Inilah alasan Kubernetes disebut sebagai sistem self-healing, dimana setiap controller menjalankan loop secara terus-menerus dengan proses “observe → diff → act” atau “mengamati → membandingkan → melakukan tindakan“.
Gunakan Declarative (file YAML yang disimpan di Git + kubectl apply -f) untuk lingkungan production. Gunakan Imperative (kubectl run, kubectl create) untuk uji coba cepat atau kecepatan saat ujian CKA.
Pendekatan Contoh Kapan digunakan
Imperatif kubectl run nginx --image=nginx Uji cepat, belajar, ujian CKA
Deklaratif kubectl apply -f deployment.yaml Produksi, GitOpsTips CKA: Gunakan perintah imperatif dengan opsi --dry-run=client -o yaml untuk membuat kerangka file YAML dengan cepat:
kubectl create deployment web --image=nginx --replicas=3 --dry-run=client -o yaml > web.yamlapp=web,tier=frontend).metadata:
labels:
app: payments
tier: backend
env: prod
annotations:
deploy.company.com/owner: "team-payments"
prometheus.io/scrape: "true"Service menggunakan selector untuk menemukan Pod yang sesuai:
spec:
selector:
app: payments
tier: backendHal penting yang sering terlewat: Jika selector pada Service tidak cocok dengan label pada Pod, Service tersebut tidak akan memiliki endpoint, sehingga traffic tidak dapat diteruskan ke Pod mana pun. Ini adalah hal pertama yang perlu diperiksa ketika menghadapi kasus “Service tidak berfungsi“.
Workloads & Controllers
Networking & Services
Storage & Configuration
Scaling & Autoscaling