- Enhancement: fix comments/logs and delete not used function - storage: make k8s emptyDir volume creation location configurable - Implement direct-assigned volume - Bump containerd to 1.6.1 - experimentally enable vcpu hotplug and virtio-mem on arm64 in kernel part - versions: Upgrade to Cloud Hypervisor v22.0 - katatestutils: remove distro constraints - Minor fixes for the `disable_block_device_use` comments - clh: stop virtofsd if clh fails to boot up the vm - clh: tdx: Don't use sharedFS with Confidential Guests - runtime: Build golang components with extra security options - snap: Use git clone depth 1 for QEMU and dependencies - snap: Don't build cloud-hypevisor on ppc64le - build: always reset ARCH after getting it - virtcontainers: remove temp dir created for vsock in test code - docs: Add unit testing presentation - virtcontainers: Use available s390x hugepages - Update QEMU >= 6.1.0 in configure-hypervisor.sh - Fix monitor listen address - snap: clh: Re-use kata-deploy script here - osbuilder: Add CentOS Stream rootfs - runtime: Gofmt fixes - Update `confidential_guest` comments - cleanup runtime pkgs for Darwin build, add basic Darwin build/unit test - docs: Update Readme document - runtime: use Cmd.StdoutPipe instead of self-created pipe - docs: Developer-Guide build a custom Kata agent with musl - kata-agent: Fix mismatching error of cgroup and mountinfo. - runtime, config: make selinux configurable - Fix unbound variable / typo on error mesage - clh: Add TDX support - virtcontainers: Do not add a virtio-rng-ccw device - kata-monitor: fix collecting metrics for sandboxes not started through CRI - runtime: fix package declaration for ppc64le - Make the hypervisor framework not Linux specific - kata-deploy: Simplify Dockerfile and support s390x - Support nerdctl OCI hooks - shim: log events for CRI-O - docs: Update contributing link - kata-deploy: Use (kata with) qemu as the default shim-v2 binary - kata-monitor: simplify sandbox cache management and attach kubernetes POD metadata to metrics - nydus: add lazyload support for kata with clh - kernel: remove SYS_SUPPORTS_HUGETLBFS from powerpc fragments - packaging: Use `patch` for applying patches - virtcontainers: Remove duplicated assert messages in utils test code - versions: add nydus-snapshotter - docs: Update limitations document - packaging: support qemu-tdx - Kata manager fix install - versions: Linux 5.15.x - trace-forwarder/agent-ctl: run cargo fmt/clippy in make check - docs: Improve top-level README - runtime: use github.com/mdlayher/vsock@v1.1.0 - tools: Build cloud-hypervisor with "--features tdx" - virtiofsd: Use "-o announce_submounts" - feature: hugepages support - tools: clh: Allow to set when to build from sources and the build flags passed down to cargo - docs: Remove docker run and shared memory from limitations - versions: Udpate Cloud Hypervisor to 55479a64d237 - kernel: add missing config fragment for TDx - runtime: The index variable is initialized multiple times in for - scripts: fix a typo while to check build_type - versions: bump CRI-O to its 1.23 release - feature(nydusd): add nydusd support to introduce lazyload ability - docs: Fix relative links in Markdown - kernel: support TDx - device: Actually update PCIDEVICE_ environment variables for the guest - docs: Update link to EFK stack docs - runtime: support QEMU SGX - snap: update qemu version to 6.1.0 for arm - Release process related fixes - openshift-ci: switch to CentOS Stream - virtcontainers: Split the rootless package into OS specific parts - runtime: suppport split firmware - kata-deploy: for testing, make sure we use the PR branch - docs: Remove Zun documentation with kata containers - agent: Fix execute_hook() args error - workflows: stop checking revert commit84dff440
release: Adapt kata-deploy for 2.4.0-rc0b257e0e5
rustjail: delete function signal in BaseContainerd647b28b
agent: delete meaningless FIXME comment1b34494b
runtime: fix invalid comments for pkg/resourcecontrolafc567a9
storage: make k8s emptyDir creation configurablee76519af
runtime: small refactor to improve readability7e5f11a5
vendor: Update containerd to 1.6.142771fa7
runtime: don't set socket and thread for arm/virt8828ef41
kernel: add arm experimental kernel build support8a9007fe
config: remove 2 config as they are removed in 5.151b6f7401
kernel: add arm experimental patches to support vcpu hotplug and virtio-memf905161b
runtime: mount direct-assigned block device fs only once27fb4902
agent: add get volume stats handler in agentea51ef1c
runtime: forward the stat and resize requests from shimv2 to kata agentc39281ad
runtime: update container creation to work with direct assigned volumes4e00c237
agent: add grpc interface for stat and resize operationse9b5a255
runtime: add stat and resize APIs to containerd-shim-v26e0090ab
runtime: persist direct volume mount infofa326b4e
runtime: augment kata-runtime CLI to support direct-assigned volumeb8844fb8
versions: Upgrade to Cloud Hypervisor v22.0af804734
clh: stop virtofsd if clh fails to boot up the vm97951a2d
clh: Don't use SharedFS with Confidential Guestsc30b3a9f
clh: Adding a volume is not supported without SharedFSf889f1f9
clh: introduce supportsSharedFS()54d27ed7
clh: introduce loadVirtiofsDaemon()ae2221ea
clh: introduce stopVirtiofsDaemon()e8bc26f9
clh: introduce setupVirtiofsDaemon()413b3b47
clh: introduce createVirtiofsDaemon()55cd0c89
runtime: Build golang components with extra security options76e4f6a2
Revert "hypervisors: Confidential Guests do not support Device hotplug"fa8b9392
config: qemu: Fix disable_block_device_use comments9615c8bc
config: fc: Don't expose disable_block_device_usec1fb4bb7
snap: Don't build cloud-hypevisor on ppc64le58913694
snap: Use git clone depth 1 for QEMU and dependenciesb27c7f40
docs: Add unit testing presentatione64c54a2
monitor: Listen to localhost only by defaulte6350d3d
monitor: Fix build optionsa67b93bb
snap: clh: Re-use kata-deploy script heref31125fe
version: Bump cloud-hypervisor to b0324f85571c441f54d0a672
subsystem: buildedf20766
docs: Update Readme documenteda8ea15
runtime: Gofmt fixes4afb278f
ci: add github action to exercise darwin build, unit testse355a718
container: file is not linux specificb31876ee
device-manager: move linux-only test to a linux-only file6a5c6344
resourcecontrol: SystemdCgroup check is not necessarily linux specificcc58cf69
resourcecontrol: convert stats dev_t to unit64types5be188cc
utils: Add darwin stubad044919
virtcontainers: Convert stats dev_t to uint6456751089
katautils: Use a syscall wrapper for the hook JSON state7d64ae7a
runtime: Add a syscall wrapper packageabc681ca
katautils: Add Darwin stub for the netNS APIde574662
config: Expand confidential_guest comments641d475f
config: clh: Use "Intel TDX" instead of just "TDX"0bafa2de
config: clh: Mention supported TEEs81ed269e
runtime: use Cmd.StdoutPipe instead of self-created pipe8edca8bb
kata-agent: Fix mismatching error of cgroup and mountinfo.a9ba7c13
clh: Fix typo on HotplugRemoveDevice827ab82a
tools: clh: Fix unbound variable082d538c
runtime: make selinux configurable1103f5a4
virtcontainers: Use FilesystemSharer for sharing the containers files533c1c0e
virtcontainers: Keep all filesystem sharing prep code to sandbox.go61590bbd
virtcontainers: Add a Linux implementation for the FilesystemSharer03fc1cbd
virtcontainers: Add a filesystem sharing interface72434333
clh: Add TDX supporta13b4d5a
clh: Add firmware to the config filea8827e0c
hypervisors: Confidential Guests do not support NVDIMMf50ff9f7
hypervisors: Confidential Guests do not support Memory hotplugdf8ffecd
hypervisors: Confidential Guests do not support Device hotplug28c4c044
hypervisors: Confidential Guests do not support VCPUs hotplug29ee870d
clh: Add confidential_guest to the config file9621c596
clh: refactor image / initrd configuration setdcdc412e
clh: use common kernel params from the hypervisor code4c164afb
versions: Update Cloud Hypervisor to 5343e09e7b8dbb2a65f90
virtcontainers: Use available s390x hugepagescb4230e6
runtime: fix package declaration for ppc64lefec26f8e
kata-monitor: trivial: rename symbols & labels9fd4e551
runtime: Move the resourcecontrol package one layer up823faee8
virtcontainers: Rename the cgroups package0d1a7da6
virtcontainers: Rename and clean the cgroup interfacead10e201
virtcontainers: cgroups: Move non Linux routine to utils.god49d0b6f
virtcontainers: cgroups: Define a cgroup interface3ac52e81
kata-monitor: fix updating sandbox cache at startup160bb621
kata-monitor: bump version to 0.3.01a3381b0
docs: Developer-Guide build a custom Kata agent with muslf6fc1621
shim: log events for CRI-O1d68a08f
docs: Update contributing link9123fc09
kata-deploy: Simplify Dockerfile and support s390x11220f05
kata-deploy: Use (kata with) qemu as the default shim-v2 binary3175aad5
virtiofs-nydus: add lazyload support for kata with clh94b831eb
virtcontainers: remove temp dir created for vsock in test code8cc1b186
kernel: remove SYS_SUPPORTS_HUGETLBFS from powerpc fragments5c9d2b41
packaging: Use `patch` for applying patches5b3fb6f8
kernel: Build SGX as part of the vanilla kernel2c35d8cb
workflows: Stop building the experimental kernel32e7845d
snap: Build vanilla kernel for all arches27de212f
runtime: Always add network endpoints from the pod netns1cee0a94
virtcontainers: Remove duplicated assert messages in utils test code6c1d149a
docs: Update limitations document7c4ee6ec
packaging/qemu: create no_patches file for qemu-tdxd47c488b
versions: add qemu tdx section77c29bfd
container: Remove VFIO lazy attach handling7241d618
versions: add nydus-snapshotter26b3f001
virtcontainers: Split hypervisor into Linux and OS agnostic bitsfa0e9dc6
virtcontainers: Make all Linux VMMs only build on Linuxc91035d0
virtcontainers: Move non QEMU specific constants to hypervisor.go10ae0591
virtcontainers: Move guest protection definitions to hypervisor.gob28d0274
virtcontainers: Make max vCPU config less QEMU specifica5f6df6a
govmm: Define the number of supported vCPUs per architecturea6b40151
tools: clh: Remove unused variables5816c132
tools: Build cloud-hypervisor with "--features tdx"e6060cb7
versions: Linux 5.15.x9818cf71
docs: Improve top-level and runtime README36c3fc12
agent: support hugepages for containers81a8baa5
runtime: add hugepages support7df677c0
runtime: Update calculateSandboxMemory to include Hugepages Limit948a2b09
tools: clh: Ensure the download binary is executable72bf5496
agent: handle hook process result80e8dbf1
agent: valid envs for hooks4f96e3ea
katautils: Pass the nerdctl netns annotation to the OCI hooksa871a33b
katautils: Run the createRuntime hooksd9dfce14
katautils: Run the preStart hook in the host namespace6be6d0a3
katautils: Pass the OCI annotations back to the called OCI hooks493ebc8c
utils: Update kata manager docs34b2e67d
utils: Added more kata manager cli options714c9f56
utils: Improve containerd configurationc464f326
utils: kata-manager: Force containerd sym link creation4755d004
utils: Fix unused parameter601be4e6
utils: Fix containerd installationae21fcc7
utils: Fix Kata tar archive checkf4d1e45c
utils: Add kata-manager CLI options for kata and containerd395cff48
docs: Remove docker run and shared memory from limitationse07545a2
tools: clh: Allow passing down a build flag55cdef22
tools: clh: Add the possibility to always build from sources3f87835a
utils: Switch kata manager to use getopts4bd945b6
virtiofsd: Use "-o announce_submounts"37df1678
build: always reset ARCH after getting it3a641b56
katatestutils: remove distro constraints90fd625d
versions: Udpate Cloud Hypervisor to 55479a64d237573a37b3
osbuilder: Add CentOS Stream rootfsf10642c8
osbuilder: Source .cargo/env before checking Rust955d359f
kernel: add missing config fragment for TDx734b618c
agent-ctl: run cargo fmt/clippy in make check12c37faf
trace-forwarder: add make check for Rustc1ce67d9
runtime: use github.com/mdlayher/vsock@v1.1.042a878e6
runtime: The index variable is initialized multiple times in for1797b3eb
packaging/kernel: build TDX guest kernel98752529
versions: add url and tag for tdx kernelbc8464e0
packaging/kernel: add option -s option2d9f89ae
feature(nydusd): add nydusd support to introduse lazyload abilityb19b6938
docs: Fix relative links in Markdown9590874d
device: Update PCIDEVICE_ environment variables for the guest7b7f426a
device: Keep host to VM PCI mapping persistently0b2bd641
device: Rework update_spec_pci() to update_env_pci()982f14fa
runtime: support QEMU SGX40aa43f4
docs: Update link to EFK stack docs54e1faec
scripts: fix a typo while to check build_type07b9d93f
virtcontainer: Simplify the sandbox network creation flow2c7087ff
virtcontainers: Make all endpoints Linux only49d2cde1
virtcontainers: Split network tests into generic and OS specific parts0269077e
virtcontainers: Remove the netlink package dependency from network.go7fca5792
virtcontainers: Unify Network endpoints management interfacec67109a2
virtcontainers: Remove the Network PostAdd methode0b26443
virtcontainers: Define a Network interface5e119e90
virtcontainers: Rename the Network structure fields and methodsb858d0de
virtcontainers: Make all Network fields private49eee79f
virtcontainers: Remove the NetworkNamespace structure844eb619
virtcontainers: Have CreateVM use a Network referenced7b67a7d
virtcontainers: Network API cleanups and simplifications2edea883
virtcontainers: Make the Network structure manage endpoints8f48e283
virtcontainers: Expand the Network structure5ef522f7
runtime: check kvm module `sev` correctly419d8134
snap: update qemu version to 6.1.0 for arm00722187
docs: update Release-Process.md496bc10d
tools: check for yq before using it88a70d32
Revert "workflows: Ensure a label change re-triggers the actions"a9bebb31
openshift-ci: switch to CentOS Stream89047901
kata-deploy-push: only run if PR modifying tools path7ffe9e51
virtcontainers: Do not add a virtio-rng-ccw device1f29478b
runtime: suppport split firmware24796d2f
kata-deploy: for testing, make sure we use the PR branch1cc1c8d0
docs: Remove images from Zun documentation5861e52f
docs: Remove Zun documentation with kata containers903a6a45
versions: Bump critools to its 1.23 release63eb1158
versions: bump CRI-O to its 1.23 release5083ae65
workflows: stop checking revert commit14e7f52a
virtcontainers: Split the rootless package into OS specific partsab447285
kata-monitor: add kubernetes pod metadata labels to metrics834e199e
kata-monitor: drop unused functions7516a8c5
kata-monitor: rework the sandbox cache sync with the container managere78d80ea
kata-monitor: silently ignore CHMOD events on the sandboxes fse9eb34ce
kata-monitor: improve debug logging4fc4c76b
agent: Fix execute_hook() args error Signed-off-by: Eric Ernst <eric_ernst@apple.com>

Kata Containers
Welcome to Kata Containers!
This repository is the home of the Kata Containers code for the 2.0 and newer releases.
If you want to learn about Kata Containers, visit the main Kata Containers website.
Introduction
Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs.
License
The code is licensed under the Apache 2.0 license. See the license file for further details.
Platform support
Kata Containers currently runs on 64-bit systems supporting the following technologies:
Architecture | Virtualization technology |
---|---|
x86_64 , amd64 |
Intel VT-x, AMD SVM |
aarch64 ("arm64 ") |
ARM Hyp |
ppc64le |
IBM Power |
s390x |
IBM Z & LinuxONE SIE |
Hardware requirements
The Kata Containers runtime provides a command to determine if your host system is capable of running and creating a Kata Container:
$ kata-runtime check
Notes:
This command runs a number of checks including connecting to the network to determine if a newer release of Kata Containers is available on GitHub. If you do not wish this to check to run, add the
--no-network-checks
option.By default, only a brief success / failure message is printed. If more details are needed, the
--verbose
flag can be used to display the list of all the checks performed.If the command is run as the
root
user additional checks are run (including checking if another incompatible hypervisor is running). When running asroot
, network checks are automatically disabled.
Getting started
See the installation documentation.
Documentation
See the official documentation including:
Configuration
Kata Containers uses a single configuration file which contains a number of sections for various parts of the Kata Containers system including the runtime, the agent and the hypervisor.
Hypervisors
See the hypervisors document and the Hypervisor specific configuration details.
Community
To learn more about the project, its community and governance, see the community repository. This is the first place to go if you wish to contribute to the project.
Getting help
See the community section for ways to contact us.
Raising issues
Please raise an issue in this repository.
Note: If you are reporting a security issue, please follow the vulnerability reporting process
Developers
See the developer guide.
Components
Main components
The table below lists the core parts of the project:
Component | Type | Description |
---|---|---|
runtime | core | Main component run by a container manager and providing a containerd shimv2 runtime implementation. |
agent | core | Management process running inside the virtual machine / POD that sets up the container environment. |
documentation | documentation | Documentation common to all components (such as design and install documentation). |
tests | tests | Excludes unit tests which live with the main code. |
Additional components
The table below lists the remaining parts of the project:
Component | Type | Description |
---|---|---|
packaging | infrastructure | Scripts and metadata for producing packaged binaries (components, hypervisors, kernel and rootfs). |
kernel | kernel | Linux kernel used by the hypervisor to boot the guest image. Patches are stored here. |
osbuilder | infrastructure | Tool to create "mini O/S" rootfs and initrd images and kernel for the hypervisor. |
agent-ctl |
utility | Tool that provides low-level access for testing the agent. |
trace-forwarder |
utility | Agent tracing helper. |
ci |
CI | Continuous Integration configuration files and scripts. |
katacontainers.io |
Source for the katacontainers.io site. |
Packaging and releases
Kata Containers is now available natively for most distributions. However, packaging scripts and metadata are still used to generate snap and GitHub releases. See the components section for further details.
Glossary of Terms
See the glossary of terms related to Kata Containers.