Episode ini mengintegrasikan Cloud Hypervisor ke Kubernetes lewat Kata Containers: RuntimeClass kata-clh yang menjalankan tiap pod di dalam VM, setup dengan kata-deploy Helm chart, dan alur containerd shimv2 → Cloud Hypervisor → guest kernel → agent. Kalian memahami isolasi pod penuh dengan kelincahan container.

Inilah episode yang menjawab pertanyaan paling sering diajukan soal Cloud Hypervisor: untuk apa sebenarnya dipakai di dunia nyata? Jawabannya ada di Kata Containers. Kata Containers adalah runtime OCI yang membungkus setiap container ke dalam VM ringan — dan Cloud Hypervisor adalah salah satu backend utama runtime kata-clh.
Bayangkan sebuah apartemen (node Kubernetes) di mana tiap kamar (pod) dikelilingi dinding beton (VM) yang tidak bisa ditembus kamar lain — meski kamar tetangga sudah dibobol perampok (container yang dikompromi). Di episode 18 kita membangun itu: memasang Kata Containers dengan kata-clh, mendefinisikan RuntimeClass, dan memahami alur pod dari containerd sampai ke VM.
Kata Containers menggabungkan keamanan VM dengan kelincahan container. Setiap pod dijalankan di dalam VM tersendiri yang ditenagai Cloud Hypervisor (atau QEMU untuk runtime kata-qemu). Hasilnya:
Alur eksekusi pod memakai shim v2:
kubelet → containerd → shimv2 (kata) → Cloud Hypervisor (VM)
↓
guest kernel + rootfs pod
↓
agent di dalam VM → menjalankan containerkata-clh dan memanggil shim v2 Kata.Dari sudut pandang Kubernetes, ini transparan — pod berjalan seperti biasa; yang berbeda hanyalah runtime di belakangnya.
Cara termudah menginstall adalah Helm chart kata-deploy yang menyebarkan daemonset Kata Containers ke seluruh node:
helm repo add kata-containers https://kata-containers.github.io/kata-containers
helm repo updatehelm install kata-deploy kata-containers/kata-containers \
--namespace kube-system \
--create-namespace \
--set runtimeClass.create=true \
--set runtimeClass.snapshotter=overlayfs \
--set defaultRuntimeClassName=kata-clh \
--set shims.v2.default=true \
--set shims.v2.enableAllShims=false \
--set kataImage.registry="ghcr.io/kata-containers/kata-deploy"Kunci konfigurasi yang perlu dipahami:
shims.v2.default=true: shim v2 dipasang sebagai default, dan backend yang dipakai adalah kata-clh (Cloud Hypervisor).runtimeClass.create=true: RuntimeClass kata-clh dibuat otomatis.runtimeClass.snapshotter=overlayfs: memakai snapshotter overlayfs agar rootfs container bisa dipakai di dalam VM.kubectl -n kube-system get ds kata-deploy
kubectl get runtimeclass kata-clh
kubectl get runtimeclass kata-clh -o jsonpath='{.handler}'kubectl get runtimeclass kata-clh harus menampilkan RuntimeClass dengan handler kata-clh.
Setelah RuntimeClass tersedia, jalankan pod dengan runtimeClassName: kata-clh:
apiVersion: v1
kind: Pod
metadata:
name: secure-app
spec:
runtimeClassName: kata-clh
containers:
- name: app
image: nginx:latest
resources:
requests:
memory: "256Mi"
cpu: "250m"kubectl apply -f pod-kata.yaml
kubectl get pod secure-app -wCara membuktikan pod berjalan di dalam VM Cloud Hypervisor, bukan di host:
kubectl exec secure-app -- uname -rVersi kernel yang berbeda dari kernel host adalah bukti kuat bahwa pod berada di VM terpisah:
uname -rDi node tempat pod berjalan, cek proses host:
pgrep -af cloud-hypervisorHarus ada satu proses cloud-hypervisor per pod kata — bukti isolasi VM yang aktif.
Warning
Pod di belakang kata-clh tidak berbagi kernel host — ini konsekuensi yang harus dipahami semua orang: kernel module yang dibutuhkan workload (misal yang memuat driver khusus) harus tersedia di dalam guest kernel Kata, bukan kernel host. Baca dokumentasi Kata Containers untuk daftar module yang disediakan.
Container state dan filesystem di dalam VM disinkronkan ke host lewat virtio-fs dan shim. Crash pod = VM dihentikan, container di dalamnya ikut berhenti, dan kubelet menjadwalkan ulang. Tidak ada "VM yang menggantung" di balik pod — model operasionalnya tetap Kubernetes murni.
Resource pod (requests/limits) diterjemahkan menjadi memory dan CPU VM. Untuk workload yang butuh resource besar, set requests/limits yang wajar — VM dibuat sesuai ukuran itu. Ingat: 1 pod = 1 VM — boot VM menambah overhead start, sehingga pod kata-clh cocok untuk workload yang butuh keamanan tinggi dan berumur panjang, bukan fungsi ephemeral ultra-sering.
Semua yang kita pelajari berlaku di sini: guest memory memakai shared=on (snapshot/migration), virtio-fs untuk rootfs (episode 6), dan TAP per-VM untuk isolasi network (episode 13). Kata Containers mengotomatiskan konfigurasi itu — kalian memilihnya lewat RuntimeClass.
Tip
Untuk workload multi-tenant yang membutuhkan isolasi kuat di satu node bersama (misal menjalankan kode milik pengguna berbeda), kata-clh adalah jawaban yang jauh lebih aman daripada sandbox container biasa. Ini peran yang sama dengan serverless microVM — kini dengan kelincahan Kubernetes penuh.
runtimeClass.create=true saat install helm.Inti yang harus dibawa pulang:
kata-clh.kata-deploy dan set shims.v2.default=true untuk kata-clh.runtimeClassName: kata-clh.uname -r di dalam pod membuktikan isolasi kernel dari host.Di episode 19 selanjutnya kita akan membahas nested virtualization & EC2 — AWS EC2 yang mendukung nested virtualization (C8i/M8i/R8i, Februari 2026) memungkinkan kalian menjalankan KVM dan Cloud Hypervisor di instance reguler, plus deployment di bare-metal dan edge nodes. Kubernetes microVM di cloud publik jadi nyata.