Episode ini memandu instalasi Kata Containers dengan tiga cara: release tarball, kata-deploy via Helm chart, dan build dari source. Kalian juga memverifikasi instalasi dengan kata-runtime check serta kata-runtime kata-check untuk memastikan KVM dan hypervisor siap digunakan.

Ini saatnya aksi nyata pertama: menginstall Kata Containers. Di episode 3 kita akan menempuh tiga jalur instalasi — release tarball untuk node tunggal, kata-deploy untuk seluruh cluster Kubernetes, dan build dari source untuk kalian yang ingin memahami dalamnya. Lalu kita memverifikasi instalasi dengan kata-runtime check dan kata-runtime kata-check.
Episode 2 sudah memberi kalian peta arsitektur. Sekarang kita meletakkan komponen-komponennya ke node. Pastikan prasyarat episode 0 sudah terpenuhi — terutama /dev/kvm — karena tanpa akselerasi hardware, semua jalur instalasi akan berakhir di hypervisor yang tidak bisa boot.
Cara paling langsung untuk node tunggal adalah mengunduh release tarball dari halaman rilis resmi GitHub. Tarball berisi binary kata-runtime, containerd-shim-kata-v2, hypervisor, guest kernel, dan konfigurasi. Ambil versi stabil terbaru:
wget https://github.com/kata-containers/kata-containers/releases/download/4.0.0/kata-static-4.0.0-x86_64.tar.xz
tar -xvf kata-static-4.0.0-x86_64.tar.xz -C /tar -xvf ... -C / mengekstrak seluruh komponen ke lokasi standar /usr/local/bin, /usr/share, dan /etc/kata-containers. Sesuaikan nama file dengan arsitektur kalian — x86_64, aarch64, ppc64le, atau s390x.
Perlu dicatat bahwa tarball mengekstrak ke direktori root — pastikan kalian memahami apa yang diinstall sebelum menjalankannya di node production. Untuk environment container, ekstrak ke direktori tersendiri lalu tambahkan ke PATH:
mkdir -p /opt/kata
tar -xvf kata-static-4.0.0-x86_64.tar.xz -C /opt/kata
export PATH=/opt/kata/usr/local/bin:$PATHUntuk cluster Kubernetes dengan banyak node, instalasi manual tidak praktis. kata-deploy menyelesaikan masalah ini: ia menjalankan instalasi di setiap node secara otomatis, termasuk memasukkan konfigurasi ke containerd dan membuat RuntimeClass.
Cara modern memakainya adalah lewat Helm chart dari OCI registry resmi:
helm install kata-deploy oci://ghcr.io/kata-containers/kata-deploy-charts/kata-deploy \
--namespace kube-system \
--set defaultRuntimes=katahelm install kata-deploy oci://ghcr.io/kata-containers/kata-deploy-charts/kata-deploy menarik chart dari registry OCI resmi Kata dan men-deploy DaemonSet ke semua node. Opsi defaultRuntimes=kata mengatur runtime default yang dipakai cluster.
kata-deploy juga bisa dijalankan sebagai DaemonSet langsung dari manifest GitHub jika kalian tidak memakai Helm:
kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml
kubectl -n kube-system get ds kata-deploy --waitkubectl -n kube-system get ds kata-deploy --wait memblokir sampai semua node selesai menginstall Kata. Untuk menghapus kata-deploy nanti, gunakan kubectl delete ds kata-deploy — binary Kata di node tetap ada setelah DaemonSet dihapus.
Untuk memahami dalam-dalam atau menguji perubahan, build dari source. Kata memakai Yocto/Buildroot untuk membangun guest image, dan build system sendiri untuk runtime. Persyaratan umumnya: Go (untuk runtime klasik), Rust toolchain (untuk runtime-rs), dan dependency build:
git clone https://github.com/kata-containers/kata-containers.git
cd kata-containers/src/runtime-rs
make
make installmake && make install di direktori src/runtime-rs membangun runtime Rust dan memasangnya ke sistem. Build dari source memakan waktu dan menuntut toolchain lengkap — untuk produksi, jalur 1 dan 2 jauh lebih praktis. Gunakan build dari source hanya jika kalian berkontribusi atau mengejar versi eksperimental.
Note
Tiga jalur instalasi melayani kebutuhan berbeda: tarball untuk node tunggal dan kontrol manual, kata-deploy untuk seluruh cluster, dan source build untuk pengembangan. Di produksi, kata-deploy (atau image node yang sudah berisi Kata) adalah pilihan paling umum.
Setelah menginstall, verifikasi bahwa seluruh komponen terpasang dengan benar. Perintah pertama yang harus dikuasai:
kata-runtime version
kata-runtime checkkata-runtime version menampilkan versi runtime dan komponen build. kata-runtime check adalah perintah verifikasi menyeluruh: ia mengecek binary yang dibutuhkan, modul kernel, akselerasi hardware, dan kesiapan lingkungan. Output sehat akan menampilkan System is capable of running Kata Containers.
Perintah terkait yang lebih spesifik:
kata-runtime kata-checkkata-runtime kata-check mengecek apakah kernel host mendukung semua requirement Kata — termasuk fitur virtualisasi, modul, dan /dev/kvm. Jika ada komponen yang tidak lolos, outputnya menunjuk langsung ke item yang bermasalah, misalnya kernel host yang tidak mendukung fitur tertentu.
Agar Kubernetes bisa memakai Kata, containerd harus tahu bahwa ada runtime bernama Kata. Buka /etc/containerd/config.toml dan tambahkan blok runtimes untuk shim Kata:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata]
runtime_type = "io.containerd.kata.v2"
privileged_without_host_devices = true
pod_annotations = ["io.katacontainers.*"]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
runtime_type = "io.containerd.runc.v2"runtime_type = "io.containerd.kata.v2" memberitahu containerd bahwa runtime kata di-handle oleh containerd-shim-kata-v2. Setelah mengubah file ini, restart containerd: systemctl restart containerd. Kata-deploy melakukan konfigurasi ini otomatis saat berjalan.
Setelah containerd mengenal runtime Kata, kita siapkan RuntimeClass di cluster. Perhatikan bahwa kata-deploy membuat RuntimeClass ini secara otomatis. Untuk setup manual:
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: kata
handler: katahandler: kata harus cocok dengan nama runtime di konfigurasi containerd. RuntimeClass ini akan dipakai di episode 4 untuk menjalankan pod pertama kalian. Nama-nama RuntimeClass lain — kata-clh, kata-fc, kata-qemu-coco-dev — akan dibahas sesuai topik masing-masing.
Warning
Setelah mengubah /etc/containerd/config.toml, containerd harus di-restart agar konfigurasi baru terbaca. Jika kalian lupa restart, pod dengan RuntimeClass Kata akan gagal dengan error handler tidak dikenal.
Inti yang harus dibawa pulang:
oci://ghcr.io/kata-containers/kata-deploy-charts/kata-deploy.kata-runtime check dan kata-runtime kata-check memverifikasi kesiapan KVM dan hypervisor.kata menghubungkan pod dengan runtime Kata.Di episode 4 selanjutnya kita akan menjalankan workload pertama di Kubernetes — memahami RuntimeClass Kata secara utuh (kata, kata-clh, kata-fc, kata-qemu-coco-dev), membuat pod dengan spec.runtimeClassName, dan memverifikasi bahwa proses aplikasi benar-benar berjalan di dalam microVM, bukan di host.