This episode traces the origins of Kata Containers from the merger of Intel Clear Containers and Hyper.sh runV in December 2017, its status as an OpenInfra project, and its transition to a Rust runtime. You'll also understand why microVM isolation is needed and who's adopted it in production.

Welcome back to the Learn Kata Containers series! In episode 0 you prepared a node with KVM, containerd, and the basic tooling. Now we'll step back for a moment to understand where Kata Containers comes from and what security problem it actually solves. Without this context, all the kata-runtime commands and RuntimeClasses in the upcoming episodes will feel like a black box.
Episode 1 covers three big things: the birth of Kata from the merger of two projects, the "the speed of containers, the security of VMs" philosophy, and who's already adopted it in production. Why does it matter? Because the decision to use Kata Containers is usually born from an understanding of the security limits of traditional containers.
Before Kata existed, there were two different approaches to securing containers. Intel Clear Containers (from Intel) focused on running containers inside virtual machines using KVM/QEMU technology. Hyper.sh runV (from the company Hyper.sh) did something similar with a slightly different approach but the same goal: containers with VM isolation.
Both projects realized they were chasing the same problem. In December 2017, they merged into a single project called Kata Containers, announced at KubeCon Austin. Kata means "words" — a metaphor that this project unites two different languages into one that everyone understands.
Kata Containers then became a project under the OpenInfra Foundation — the same umbrella as OpenStack. Membership in this foundation means Kata development isn't controlled by a single vendor: Intel, Hyper.sh, and later many other companies contribute together. This is one reason Kata is trusted in production — no single party can halt its development unilaterally.
Since the 3.x series, the most significant architectural change began: the main runtime moved from Go to Rust, with an implementation named runtime-rs. This move brought Rust's memory safety, speed, and lower resource consumption. It culminated in Kata Containers 4.0.0, released July 22, 2026: the Rust runtime became the default with a Rust-first architecture. We'll break down the full details in episode 17.
runc-based containers share the host kernel. Namespaces and cgroups provide isolation, but that boundary is software — one kernel, thousands of processes, and a single kernel flaw means every tenant is affected. Imagine an apartment building built on a single shared foundation: comfortable and cheap, but one crack in the foundation is felt by every resident.
Kata Containers flips that logic: every pod gets its own kernel inside a microVM. The isolation boundary now lives in hardware — the hypervisor separates the guest kernel from the host kernel. A tenant that gets exploited can only damage its own VM, not the whole node.
This philosophy is the heart of Kata. Containers win on speed and convenience; VMs win on security and isolation. Kata designs the entire stack so a pod boots in 150-300 milliseconds — close to the speed of a regular container, but with full VM isolation:
This isn't marketing numbers. The architecture covered in episode 2 — from shim to guest kernel — is designed specifically to hit that boot time, including the optimizations done by the Rust runtime and Dragonball.
Kata doesn't force you to change your tooling. Because it follows the OCI specification and works through CRI, Kubernetes recognizes it as a regular runtime. A pod uses Kata simply by setting spec.runtimeClassName — the RuntimeClass object you already know from episode 0. No changes to Deployments, Services, or NetworkPolicies.
To check the runtime version currently active on the node:
kata-runtime versionkata-runtime version prints the runtime version, the OCI protocol version, and the build commit. We'll use this command in full in episodes 3 and 4.
Production adoption proves Kata is more than research:
The pattern across all these adoptions is the same: untrusted or multi-tenant workloads — sandboxes for external code, CI/CD running third-party artifacts, and AI agents executing tools from unknown sources.
First check that everything prepared in episode 0 is still intact, because episode 3 will use it all directly:
ls -l /dev/kvm
kubectl get nodes -o wide
kata-runtime versionls -l /dev/kvm confirms hardware acceleration is available, kubectl get nodes -o wide confirms the cluster is healthy, and kata-runtime version confirms the runtime binary is installed. If the binary isn't there yet, don't worry — episode 3 will install it fully.
Note
Kata Containers evolves quickly: from the 3.x series with monthly releases to 4.0.0 with the Rust runtime as default. Note the version you're using — in episode 13 you'll see that the version also determines which security vulnerabilities have or haven't been patched.
As an overview, here's where Kata sits among other isolation approaches:
A deep comparison, including when to choose gVisor over Kata, will be covered in episode 22.
Key takeaways:
In the next episode, episode 2, we'll dissect the core concepts and main architecture of Kata Containers — the flow from containerd shimv2 to VMM to guest kernel to Kata agent, components like containerd-shim-kata-v2, kata-runtime, kata-runtime-rs, and kata-agent, and how virtio and VFIO connect host and guest. This is the architectural foundation used in every upcoming episode.