- kata-deploy: Install protobuf-compiler explicitly in shim-v2 Dockerfile - runtime: tracing: Fix missing ctx return - runtime: add reconnect timeout for vhost user block - SEV: Update ReducedPhysBits - shim-v2/build.sh: Only build runtime-rs for the supported arches - kata-ctl: Expand unit tests for CPU check - runtime: support cgroup v2 metrics marshal guest metrics - Typo: change tabs in comment to spaces - rootfs: support EROFS filesystem - versions: Update runc version - runtime: Improve documentation of appendFDs - Minor cleanups in make file - main | docs: Fix missing critical steps in how-to-hotplug-memory-arm64.md - Action check kernel config version - clh: Enforce API timeout only for vm.boot request - virtiofsd: change cache mod to const - runtime-rs: ignor "no such process" error when delete cgroup for a thread to let it go - kernel: Add console kernel config for s390 - runtime: remove not used shim configurations - improvement: Fix naming conventions for span name and log subsystem - Dragonball: add cpu resize ability - arm64/CI: fix unit test failure on arm64 - CI: Make docker version stick to v20.10 in ubuntu:20.04 for s390x|ppc64le - virtiofsd: fix the build on ppc64le - runtime:fix stat uds path - cni: Update cni plugins version to 1.2.0 - Built-in Sandbox: add more unit tests for dragonball. Part 5 - runtime: Drop QEMU log file support - docs: Add documentation for building agent with seccomp support. - Add kernel-dragonball-experimental to kata-deploy, kata-deploy-test, and the release - runtime-rs: add missing config section for share-fs - runtime: Add hmp for qemu - upcall: add document for upcall - runtime: Start QEMU undaemonized and get logs - docs: Update url link in QAT documentation - versions: update cni plugins version - versions: Upgrade to Cloud Hypervisor v29.0 - runtime: Use consts in `kata-runtime check` - versions: Bump QEMU to v7.2.0 - agent: Eliminate unnecessary metrics - runtime:all APIs are hang in the service.mu - Utility functions for kata-env - versions: Update conmon version - runtime: paas enablevhostuserstore annotation to hypervisor config - runk: Upgrade liboci-cli to v0.0.4 - runtime: use system pagesize for hugepage test - dependency: update cgroups-rs - runtime: Use git rev-parse for the kata-monitor tag - virtcontainers: split out linux-specific bits for mount, factory - Add darwin skeletons - vendor: revendor netlink to get latest - Address issues with the initial vCPU pinning functionality - virtcontainers: Fix misspelling in error message - runtime: add test generated file to .gitignore - runtime: fix up disable_netns handling - docs: add hint of probing loop module - tools: add --locked option for cargo install - runtime-rs: add Single Container support - virtcontainers: tests: Ensure Linux specific tests are just run on Linux - Change cache mode from none to never - tools: Fix indentation for setup aks script - virtcontainers: fs_share: Add Darwin skeleton - virtcontainers: Add a Virtualization.framework skeleton - kata-ctl: remove get_kata_version_by_url function - kata-ctl: fix build error on s390x - virtcontainers: Introduce hypervisor_darwin - runtime: Define Darwin handled signals list - nydus: net-ns handling needs to be only executed on Linux hosts - clh: Ensure it works with Docker / Moby - agent: refactor guest hooks - fix moby prestart hook handling - schedcore: Make buildable on !linux - Built-in Sandbox: add more unit tests for dragonball. Part 4 - runtime-rs: cleanup the run dir of hypervisor when shut down - Feat: implementation of kata-ctl direct-volume operations - Runtime: Clarify mutability of global var - kata-runtime: add rust runtime path for kata-runtime exec - versions: Upgrade to Cloud Hypervisor v28.1 - runtime-rs: add dbs-upcall feature - runtime/Makefile: Get some bits happy on darwin - docs: remove old and misleading instructions for minikube - packaging: fix indents in build-kernel.sh - kernel: adding kmod to do docker env - versions: Update the rust toolchain to 1.66.0 - kata-ctl: skip test if access GitHub.com fail - agent: unset `CC` for cross-build - runtime-rs: enable hugepage - runtime-rs: Clean up mount points shared to guest - kata-ctl: fix checkcpu bug in non-x86 archesd144ded12release: Adapt kata-deploy for 3.1.0-rc08e3863ceckata-deploy: Install protobuf-compiler explicitly in shim-v2 Dockerfilec45391991runtime: tracing: Fix missing ctx return4139d68d5runtime-rs: Include target install in conditional branchca02c9f51runtime: add reconnect timeout for vhost user block2f5bc0f40kata-ctl: Expand unit tests for CPU check67b8f0773SEV: Update ReducedPhysBitsbdf20b5d2rootfs: support EROFS filesystemfff0e50a7versions: Update runc versioned02c8a05docs: add guide for building rootfs with EROFS01765e173runtime: support cgroup v2 metrics marshal guest metrics49326fe4efix(clippy): fix hypervisor clippy checks94b1d9814cargo: Update Cargo.lock filesf1855594amake: Get rid of verbose output while creating tarc3836010amake: clean up obsolete targetsac64b021aclh: Enforce API timeout only for vm.boot request56071c6e7virtiofsd: change cache mod to const5d37d31accgroups: upgrade cgroupfs to 0.3.1ab59a65c9runtime-rs: neglect a certain error when delete cgroup390916b33runtime: remove not used shim configurations9794c52c6improvement: Fix naming conventions for span name and log subsystemf49b89b63CI: Set docker version to v20.10 in ubuntu:20.04 for s390x|ppc64le3c24e2340README: Update Readme under packaging/kerneld73f3a8a2github-action: Add step to verify kernel config version id updated59f104c02runtime: skip unit test that fail regularly on aarch64b7dd97cackata-ctl: fix permission deny issue in test_add_remove57c5e5629Dragonball: add cpu resize ability3c48f2202runtime: Improve documentation of appendFDs856ab6687virtiofsd: fix the build on ppc64lef83115a83docs: Fix missing critical steps in how-to-hotplug-memory-arm64.mde071d9251Typo: change tabs in comment to spaces56f0a27fekernel: Add console kernel config for s390334c4b8bdruntime: Drop QEMU log file support3a63e3c1fcni: Update cni plugins version to 1.2.0510798155dragonball: Improve test casesdc90c6e30dragonball: add more unit test for vmc07135535runtime-rs: Improve s390x error message4e2db96efruntime-rs: Don't try to build on Power8e8c720d5kata-deploy-push: Ensure we build Dragonball specific kernel1e531b44druntime:fix stat uds path9092c23a2runtime: Add hmp for qemub7f4e96ffkata-deploy-test: Ensure we build dragonball specific kernel063dec37crelease: Add the dragonball-experimental kernel0b3c91d2akata-deploy: Add kernel-dragonball-experimental target00dcd900fdocs: Add documentation for building agent with seccomp support.2b779cba0docs: Update url link in QAT documentation39fe4a4b6runtime: Collect QEMU's stderra5319c6beruntime: Start QEMU undaemonizedbf4e3a618runtime: Launch QEMU with cmd.Start()8a1723a5cruntime: Pre-establish the QMP connection8a4f08cb0govmm: Optionally pass QMP listener to QEMU219bb8e7dgovmm: Optionally start QMP with a pre-configured connectiona85d0e465versions: update cni plugins version676d02850versions: Bump QEMU to v7.2.0861c38b6aversions: Upgrade to Cloud Hypervisor v29.0ba87e0aferuntime: Use consts in `kata-runtime check`9f490d16fupcall: add document for upcall596037e20versions: Update conmon version095e8fdefrunk: Use the original Kill command instead of the customed it.0f9e23a3drunk: Upgrade liboci-cli to v0.0.469fc8de71runtime:all APIs are hang in the service.mu8d4c2cf1bkata-ctl: Allow certain constants to go unused64c11a66fkata-ctl: Have function to get cpu details to run on specific arch923cd3fdavirtcontainers: split out Linux parts from mountcf1bae352runtime: paas enablevhostuserstore annotation to hypervisor config1592a385edependency: update cgroups-rs60ff230d8virtcontainers: Split the factory package into Linux and Darwin bits76437a972runtime: Use git rev-parse for the kata-monitor taga9626682avirtcontainers: resourcecontrol: Add skeleton for Darwinea06fe3afvirtcontainers: Add a Network API skeleton for Darwin6ee550e9aruntime: vCPUs pinning is sandbox specific, not hypervisor6199b6917runtime-rs: change cache modea33a22ccdruntime-rs: add missing config section for share-fse3d3b72favirtcontainers: use resource control for setting CPU affinityf137048beresource-control: add helper function for setting CPU affinity73216a810vendor: revendor netlink to get latestfc17d7cc4virtcontainers: Fix misspelling in error message12fd6ffc1runtime: fix up disable_netns handling64c9114a3tools: add --locked option for cargo install7eb43cec1runtime: add test generated file to .gitignore8551853cfruntime: use system pagesize for hugepage test86a82caceruntime: change cache mode from none to never82c59efd6runtime-rs: change cache mode from none to never7b309b578kata-types: change cache mode from none to neverfee4e7c7cdocs: change cache mode from none to never594b57d08utils: Add utility functions to get cpu and distro details.d33e34361check: Move PROC_CPUINFO from architecture specific filesf8a93a1detools: Fix indentation for setup aks script03de5f41bkata-ctl: remove get_kata_version_by_url function464d4c94druntime-rs: process single_container5f9c892e4kata-types: add single_container supportfa9ae9362virtcontainers: Add a Virtualization.framework skeletond48b22bb1virtcontainers: fs_share: add Darwin skeletonfafc7a8b1virtcontainers: tests: Ensure Linux specific tests are just run on Linuxefa4fc0b2clh: Add hotplug support for network devices1074d2c1dclh: Make vmAddNetPutRequest capable of doing hotplugs9ec8a1398virtcontainers: introduce hypervisor_darwin8bb68a9f2vc/network: skip existing endpoints when scanning for new onesc21a8d5ffkata-ctl: fix build error on s390x3b4420eb8runtime: Define Darwin handled signals list24b05a99bschedcore: Make buildable on !linux3886aad19nydus: net-ns handling needs to be only executed on Linux hostse256903afruntime-rs: cleanup the run dir of hypervisor when shut down937a41346kata-ctl: add unit tests for volume ops8451db7c0kata-ctl: direct-volume: add Add and Remove handlers2d4b2cf72runtime-rs: add POST method to shim-clientcae78a685kata-ctl: add constants for direct-volume commands652021ad9versions: Upgrade to Cloud Hypervisor v28.1d08538912vc: fix up UT for CreateSandbox API change578a9c25fvc: rescan network endpoints after running prestart hookscb84b0fb0katautils: run prestart hooks after starting VM079462d2erunk: Fix needless_borrow warning2c24fcf34runtime-rs: Fix clippy::bool-to-int-with-if warnings025e78341runtime-rs: Fix needless_borrow warnings4fb163d57runtime-rs: Allow clippy:box_default warnings20121fcdaruntime-rs: Fix unnecessary_cast warningsb95364a14dragonball: Allow question_mark warning in allocate_device_resources()0b2f060bfdragonball: Fix unnecessary_cast warningsa545a6593agent: Allow clippy::question_mark warning in Namespace{}9ced34dd2agent: Fix explicit_auto_deref warningsf77220490agent: Fix needless_borrow warnings7bcdc9049rustjail: Fix unnecessary_cast warnings41d7dbaaerustjail: Fix needless_borrow warnings2a73e057dkata-types: Fix unnecessary_cast warningscf9ef1833kata-types: Fix needless_borrow warnings126187e81safe-path: Fix needless_borrow warningsbb78d35dbkata-sys-util: Fix "match-like-matches-macro" warning668e65240kata-sys-util: Fix unnecessary_cast warningsc1a8d89a7kata-sys-util: Fix needless_borrow warningsc9c38e6d0logging: Allow clippy::type-complexity warningffd6fbb6blogging: Fix needless_borrow warnings60df30015protocols: Fix unnecessary_cast warnings56e7b5d0fruntime/Makefile: Get some bits happy on darwin0bbeb34b4protocols: Fix needless_borrow warningsdfea6c7d2versions: Update the rust toolchain to 1.66.086ee24b33Runtime: Clarify mutability of global vardae667062kata-runtime: add rust runtime path for kata-runtime execa2e3715e0upcall: remove upcall client when stopping vm31591d791dragonball: fix unit test failure case about Kvm.2b02e0a9bdragonball: add more unit test for vcpu manager85f9094f1agent: refactor guest hooks360506225runtime-rs: add dbs-upcall feature03a0c9d78kata-ctl: skip test if access GitHub.com fail1dcbda3f0kata-ctl: update Cargo.lockb4b5d8150docs: remove old and misleading instructions for minikube0fe24e08bpackaging: fix indents in build-kernel.sh3480780bdkata-ctl: add check framework support for non-x861bd533f10kata-ctl: let check framework arch-agnosticfd77eebd4runtime-rs: fix the issues mentioned in the code review0e6920790runtime-rs: Clean up mount points shared to guestecb28e2b1kernel: adding kmod to do docker env087515a46agent: unset `CC` for cross-buildbf8848f92agent: Eliminate unnecessary metricsf8a48ab41docs: add hint of probing loop moduleafaf17f42runtime-rs: enable container hugepagefc4a67eecruntime-rs: enable vm hugepage Signed-off-by: Archana Shinde <archana.m.shinde@intel.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-checksoption.By default, only a brief success / failure message is printed. If more details are needed, the
--verboseflag can be used to display the list of all the checks performed.If the command is run as the
rootuser 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. |
| runtime-rs | core | The Rust version runtime. |
| agent | core | Management process running inside the virtual machine / POD that sets up the container environment. |
dragonball |
core | An optional built-in VMM brings out-of-the-box Kata Containers experience with optimizations on container workloads |
| 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. |
kata-ctl |
utility | Tool that provides advanced commands and debug facilities. |
trace-forwarder |
utility | Agent tracing helper. |
runk |
utility | Standard OCI container runtime based on the agent. |
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.