
This playground demonstrates the Nested Virtualization capabilities of the new Cloud Hypervisor backend. It is based on the official Kubernetes Omni playground and adds the following simple customizations:
cplane-01, node-01, and node-02 machines were switched from the default Firecracker to Cloud Hypervisor.export VERSION=$(curl -sSL https://api.github.com/repos/kata-containers/kata-containers/releases/latest | jq .tag_name | tr -d '"')
export CHART="oci://ghcr.io/kata-containers/kata-deploy-charts/kata-deploy"
helm install kata-deploy "${CHART}" --version "${VERSION}"
kubectl apply -f -<<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx-kata-qemu
spec:
runtimeClassName: kata-qemu
containers:
- name: nginx
image: nginx:stable
EOF
To verify that the Nginx process runs in its own VM, you can use the following command:
kubectl exec -it nginx-kata-qemu -- uname -a
Linux nginx-kata-qemu 6.18.15 #1 SMP Tue Mar 17 01:39:00 UTC 2026 x86_64 Linux
To see the full list of the supported runtime classes, run:
kubectl get runtimeclasses
NAME HANDLER AGE
kata-clh kata-clh 33s
kata-cloud-hypervisor kata-cloud-hypervisor 33s
kata-dragonball kata-dragonball 33s
kata-fc kata-fc 33s
kata-qemu kata-qemu 33s
kata-qemu-cca kata-qemu-cca 33s
kata-qemu-coco-dev kata-qemu-coco-dev 33s
kata-qemu-coco-dev-runtime-rs kata-qemu-coco-dev-runtime-rs 33s
kata-qemu-nvidia-gpu kata-qemu-nvidia-gpu 33s
kata-qemu-nvidia-gpu-snp kata-qemu-nvidia-gpu-snp 33s
kata-qemu-nvidia-gpu-tdx kata-qemu-nvidia-gpu-tdx 33s
kata-qemu-runtime-rs kata-qemu-runtime-rs 33s
kata-qemu-se kata-qemu-se 33s
kata-qemu-se-runtime-rs kata-qemu-se-runtime-rs 33s
kata-qemu-snp kata-qemu-snp 33s
kata-qemu-snp-runtime-rs kata-qemu-snp-runtime-rs 33s
kata-qemu-tdx kata-qemu-tdx 33s
kata-qemu-tdx-runtime-rs kata-qemu-tdx-runtime-rs 33s
This playground demonstrates the Nested Virtualization capabilities of the new Cloud Hypervisor backend. It is based on the official Kubernetes Omni playground and adds the following simple customizations:
cplane-01, node-01, and node-02 machines were switched from the default Firecracker to Cloud Hypervisor.export VERSION=$(curl -sSL https://api.github.com/repos/kata-containers/kata-containers/releases/latest | jq .tag_name | tr -d '"')
export CHART="oci://ghcr.io/kata-containers/kata-deploy-charts/kata-deploy"
helm install kata-deploy "${CHART}" --version "${VERSION}"
kubectl apply -f -<<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx-kata-qemu
spec:
runtimeClassName: kata-qemu
containers:
- name: nginx
image: nginx:stable
EOF
To verify that the Nginx process runs in its own VM, you can use the following command:
kubectl exec -it nginx-kata-qemu -- uname -a
Linux nginx-kata-qemu 6.18.15 #1 SMP Tue Mar 17 01:39:00 UTC 2026 x86_64 Linux
To see the full list of the supported runtime classes, run:
kubectl get runtimeclasses
NAME HANDLER AGE
kata-clh kata-clh 33s
kata-cloud-hypervisor kata-cloud-hypervisor 33s
kata-dragonball kata-dragonball 33s
kata-fc kata-fc 33s
kata-qemu kata-qemu 33s
kata-qemu-cca kata-qemu-cca 33s
kata-qemu-coco-dev kata-qemu-coco-dev 33s
kata-qemu-coco-dev-runtime-rs kata-qemu-coco-dev-runtime-rs 33s
kata-qemu-nvidia-gpu kata-qemu-nvidia-gpu 33s
kata-qemu-nvidia-gpu-snp kata-qemu-nvidia-gpu-snp 33s
kata-qemu-nvidia-gpu-tdx kata-qemu-nvidia-gpu-tdx 33s
kata-qemu-runtime-rs kata-qemu-runtime-rs 33s
kata-qemu-se kata-qemu-se 33s
kata-qemu-se-runtime-rs kata-qemu-se-runtime-rs 33s
kata-qemu-snp kata-qemu-snp 33s
kata-qemu-snp-runtime-rs kata-qemu-snp-runtime-rs 33s
kata-qemu-tdx kata-qemu-tdx 33s
kata-qemu-tdx-runtime-rs kata-qemu-tdx-runtime-rs 33s