
Kata Containers
A container runtime that starts each pod inside its own lightweight VM, so Kubernetes and Docker keep working but every pod gets its own kernel.
- What it is
- MicroVMs
- Used for
- Containers
- Type
- Open source
- Made by
- OpenInfra Foundation (part of the Linux Foundation since July 2025)
- License
- Apache 2.0
- Facts checked
- 6 October 2026
What it is
Kata Containers looks like an ordinary container runtime from the outside and runs a virtual machine on the inside. When containerd or CRI-O asks it to start a pod, Kata boots a small VM with its own Linux kernel, and an agent inside the VM (kata-agent) creates the pod’s containers there. All containers of one pod share that VM, so the hardware boundary sits between pods rather than between a container and its host. Kata implements containerd’s shim v2 API: one containerd-shim-kata-v2 process per pod talks to the container manager over a socket, instead of the separate shim and proxy processes the 1.x design needed. In Kubernetes you register it as a RuntimeClass and set runtimeClassName: kata on the pods that should be isolated; everything else keeps the default runtime.
Kata doesn’t include one hypervisor; it drives several. QEMU is the best supported, and the one to use for NVIDIA GPUs and confidential computing (Intel TDX, AMD SEV-SNP). Cloud Hypervisor and Firecracker are smaller Rust monitors, and Dragonball, written by Ant Group, is built into the Rust shim process itself. Version 4.0 (July 2026) made that Rust runtime (runtime-rs) the default and deprecated the original Go runtime. Microsoft’s AKS Pod Sandboxing and Google’s GKE Sandbox microVMs both run Kata with Cloud Hypervisor. The project began in December 2017 as a merger of Intel Clear Containers and Hyper’s runV, under what is now the OpenInfra Foundation.
Why teams pick it
- A separate guest kernel per pod, while images,
kubectland container tooling stay the same - Pick the hypervisor per runtime class: QEMU for GPUs and confidential computing, Cloud Hypervisor, Firecracker or the built-in Dragonball for a small footprint
- Privileged containers become safer: on GKE they get root only inside the pod’s VM, not on the node
- Offered as a managed option by AKS (Pod Sandboxing) and GKE (Sandbox microVMs)
Watch out for
- Needs KVM: bare metal, or cloud VMs with nested virtualisation (GKE microVMs run only on node types that support it)
- A fixed cost per pod: GKE documents 250 mCPU and 130 MiB of overhead and about one to two seconds to start, against under 200 ms for gVisor
- Some container features don’t cross the VM boundary: no host networking, no Kubernetes
subPathvolume mounts, and Kata’s docs list Podman as unsupported - Each hypervisor has its own gaps: GPUs and TDX/SEV-SNP only with QEMU, and Firecracker needs a block-device storage driver (containerd’s devmapper snapshotter)
Alternatives
What all microvms have in common →How it fits with other technologies
What Kata Containers uses
Register Kata as a RuntimeClass and opt one pod in · yaml
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: kata
handler: kata # the runtime name in containerd's config
---
apiVersion: v1
kind: Pod
metadata:
name: nginx-kata
spec:
runtimeClassName: kata # this pod gets its own VM and kernel
containers:
- name: nginx
image: nginxSee it in a real stack
No architecture uses Kata Containers yet. Drop it into the playground and wire it up yourself.Open playground →Compared side by side
Where it came from2017–2026
By 2017 two projects were running containers inside small virtual machines to get a hardware boundary without giving up container workflows: Intel’s Clear Containers and Hyper’s runV. JD.com already sold a container service built on runV. On December 5, 2017 the OpenStack Foundation announced Kata Containers, which combined the two code bases under open governance. Intel contributed Clear Containers, Hyper contributed runV, and companies including Google, Huawei, Red Hat, Canonical and SUSE backed the launch. The name is meant to suggest a Greek word for “trust something to someone”.
The first design had six parts: an agent, a runtime, a proxy, a shim, a guest kernel and a QEMU 2.9 package. Version 1.0 shipped in May 2018, and 1.5 (January 2019) added Firecracker as a hypervisor and a new way to integrate with containerd. Kata 2.0 (October 2020) rewrote the in-VM agent in Rust and kept only the containerd shim v2 interface, dropping the per-container shim and proxy processes.
Kata 3.0 (October 2022) added a runtime written in Rust with an optional built-in VMM, Dragonball. In 2025 the foundation behind Kata, by then called the Open Infrastructure Foundation, became part of the Linux Foundation. Kata 4.0 (July 2026) made the Rust runtime the default and deprecated the Go one.
Why it’s built this way
- One VM per pod, not per container
- Containers in a Kubernetes pod already share network and storage, so the pod is the natural unit to wall off. Kata represents a pod as a VM and runs its containers inside it.
- Speak the existing container interfaces
- From the start Kata targeted the OCI runtime spec and Kubernetes’ CRI, so containerd, CRI-O and Docker could use it without new tooling. Users switch per pod with a
RuntimeClassinstead of adopting a new platform. - Hypervisor-agnostic
- No single monitor fits every workload: QEMU emulates the devices GPUs and confidential computing need, while Firecracker and Cloud Hypervisor trade features for size. Kata configures each runtime class for one hypervisor and lets operators choose.
- A single shim v2 process per pod
- The 1.x design called the runtime binary repeatedly and needed a shim per container plus a proxy, which was slow and made it hard to track state. With containerd’s shim v2 API one long-lived process serves the whole pod over a gRPC socket.
Timeline
- 2017
Announced December 5, merging Intel Clear Containers and Hyper runV
- 2018
Kata Containers 1.0 released in May
- 2019
1.5 adds Firecracker as a hypervisor
- 2020
2.0: Rust agent, shim v2 only, virtio-fs by default
- 2022
3.0 adds a Rust runtime and the built-in Dragonball VMM
- 2025
The OpenInfra Foundation joins the Linux Foundation
- 2026
4.0 makes the Rust runtime the default
- OpenStack Foundation: Kata Containers project launches (Dec 2017) · archived copy, original
- Kata Containers runtime 1.0.0 release on GitHub (May 2018)
- Kata Containers runtime 1.5.0 release on GitHub: Firecracker support (Jan 2019)
- Kata Containers 2.0.0 release on GitHub (Oct 2020)
- Kata Containers 3.0.0 release on GitHub (Oct 2022)
- Kata Containers 4.0.0 release on GitHub (Jul 2026)
- Kata Containers docs: Architecture history (1.x vs shim v2)
- Kata Containers docs: Kubernetes support (a pod is a VM)
- Linux Foundation: OpenInfra Foundation board announces intent to join the Linux Foundation (Mar 2025)
- OpenInfra blog: Inside Open Infrastructure, July 2025 (officially joined the Linux Foundation)
Sources13 · facts checked 6 October 2026
- Kata Containers: About (merger, hypervisors, OpenInfra stewardship, Apache 2 licence)
- Kata Containers docs: Architecture (OCI, CRI, shim v2)
- Kata Containers docs: Kubernetes support (a pod is a VM)
- Kata Containers docs: Hypervisors (QEMU for GPUs, TDX and SEV-SNP; Dragonball by Ant Group)
- Kata Containers docs: runtime-rs README (supported hypervisors, built-in Dragonball)
- Kata Containers docs: Use Kubernetes with containerd and Kata (RuntimeClass)
- Kata Containers docs: Configure Kata Containers to use Firecracker (devmapper snapshotter)
- Kata Containers docs: Limitations (host network, subPath, Podman, Docker since 22.06)
- Kata Containers 4.0.0 release notes: runtime-rs default, Go runtime deprecated (Jul 2026)
- Kubernetes docs: Runtime Class
- GKE docs: About GKE Sandbox (gVisor vs Kata microVMs: overhead, start time, nested virtualisation)
- AKS docs: Pod Sandboxing with Kata Containers (Cloud Hypervisor, kata-vm-isolation)
- OpenInfra Foundation: part of the Linux Foundation
