- tools: Add some new gitignore items - shim: return hypervisor's pid not shim's pid - Dragonball: introduce upcall - refactor(shim-mgmt): move client side to libs - kata-ctl: Add --list option - kata-ctl: check: only-list-releases and include-all-releases options - basic framework for QEMU support in runtime-rs - tools: Fix indentation on build kernel script - runtime-rs: fix standalone share fs - runtime-rs: fix sandbox_pidns calculation and oci spec amending - runtime,agent: Add SELinux support for containers inside the guest - kata-sys-util: fix issues where umount2 couldn't get the correct path - agent: Drop the Option for LinuxContainer.cgroup_manager - dragonball: enable kata3.0/dragonball CI on Arm - fix kata deploy error after node reboot. - tools: Fix indentation for ovmf script - runtime: prevent waiting 50 ms minimum for a process exit - runtime-rs: fix high cpu - agent: remove `sysinfo` dependency - runtime-rs: bind mount volumes in sandbox level - docs: Update the rust version in the installation documentation - runtime-rs: fix some variable names and typos - kata-ctl: add host check for aarch64 - kata-ctl: fix dependency version conflict - workflow: fix cargo-deny-runner.yaml syntax error - runtime: Add identification in version for runtime-rs - workflow: call cargo in user's $PATH - runtime-rs: remove the version number from the commit display message - runk: Re-implement start operation using the agent codes - build: update golang version to 1.19.3 - snap: Fix snapcraft setup (unbreak snap releases) - fix(agent): fix iptables binary path in guest - runtime-rs: moving only vCPU threads into sandbox controller - tools: Remove extra tab spaces from kata deploy binaries script - ci: let static checks don't depend on build - actions: use matrix to refactor static checks - agent: support systemd cgroup for kata agent. - actions: skip some jobs using "paths-ignore" filter - runtime: go fix code for 1.19 - doc: update runtime-rs "Build and Install" - runtime: don't fail mkdir if the folder is already created by another process - kernel: add CONFIG_X86_SGX into whitelist - runtime-rs: block on the current thread when setup the network to avoid be take over by other task - Refactor(runtime-rs): add conditional compile for virt-sandbox persist - runtime: add log record to the qemu config method `appendDevices` for… - runtime: Use containerd v1.6.8 - tools: Fix indentation of build static firecracker script - package: add nydus to release artifacts - agent: check if command exist before do ip_tables test - runtime: Support virtiofs queue size for qemu and make it configurable - docs: change mount-info.json to mountInfo.json - docs: update doc "NVIDIA GPU passthrough" - runtime-rs: support vhost-vsock - utils: Add utility function to fetch the kernel version. - versions: update nydusd version - runtime-rs: support nydus v5 and v6 rootfs - Upgrade to Cloud Hypervisor v28.0 - docs: update doc "Setup swap device in guest kernel" - Rust fixes + Golang bump - clh: avoid race condition when stopping clh - tools: Fix indentation of build static virtiofsd script - docs: Fix configuration path - runtime-rs : fix the shim source in the documentation test is ambiguous - versions: update vmm-sys-util and related crates to v0.11.0 - runtime-rs: delete all cargo patches - feat(shim-mgmt): iptables handler - tools: Remove empty spaces from build kernel script - Built-in Sandbox: add more unit tests for dragonball. Part 3 - Dragonball: enable mem_file_path config into hugetlbfs process - runtime-rs:add hypervisor interface capabilities - cloud-hypervisor: Fix GetThreadIDs function - github: Parallelise static checks - runtime-rs: blanks filled & fixes made to virtiofsd launch - vCPUs pinning support for Kata Containers - runtime-rs: fix shared volume permission issue - runk: Ignore an error when calling kill cmd with --all option - runk: Upgrade libseccomp crate to v0.3.0 in Cargo.lock - snap: Unbreak docker install - add EnterNetNS in virtcontainers - tools: Fix indentation of build static clh script - virtiofsd: Not use "link-self-contained=yes" on s390x - Kata ctl drop privs - versions: bump golangci-lint version - runtime-rs: generate config files with the default target - docs: Fix volumeMounts in SGX usage example - versions: Update Cloud Hypervisor to b4e39427080 - docs: update rust runtime installation guide - rustjail: Upgrade libseccomp crate to v0.3.0 - makefile: remove sudo when create symbolic link - agent: remove redundant checks - shim: Ensure pagesize is set when reporting hugetlb stats - kata-ctl: Re-enable network tests on s390x (fixes 5438) - agent: use NLM_F_REPLACE replace NLM_F_EXCL in rtnetlink - fix readme content error at doc directory - agent: validate hugepage size is supported - Makefile: fix an typo in runtime-rs makefile - qemu: Re-work static-build Dockerfile - Modify agent-url return value in runtime-rs - runtime-rs: regulate the comment in runtime-rs makefile - doc: Update how-to-run-kata-containers-with-SNP-VMs.md - kata-ctl: Disable network check on s390x - virtiofsd: Build inside a container - Dragonball: remove redundant comments in event manager - versions: Update TDX QEMU - runtime-rs: fix typo get_contaier_type to get_container_type - kata-ctl: improve command descriptions for consistency - runtime-rs: force shutdown shim process in it can't exit - versions: Update TDX kernel - ci: skip s390x for dragonball. - Dragonball: delete redundant comments in blk_dev_mgr - kata-ctl: Move development to main branch - runtime-rs: support ephemeral storage for emptydir - docs: fix a typo in rust-runtime-installation-guide - Built-in Sandbox: add more unit tests for dragonball - readme: remove libraries mentioningb5cfd0958kata-ctl: Fixed format for check release optionsfbf294da3refactor(shim-mgmt): move client side to libsae0dcacd4tools: Add some new gitignore items99485d871shim: return hypervisor's pid not shim's pid1f28ff683runtime-rs: add binary to exercise shim proper w/o containerd dependencieseb8c9d38fruntime-rs: add launch of a simple qemu process to start_vm()2f6d0d408runtime-rs: support qemu in VirtContainer1413dfe91runtime-rs: add basic empty boilerplate for qemu drivera81ced0e3upcall: add upcall into kernel build scriptf5c34ed08Dragonball: introduce upcall8dbfc3dc8kata-ctl: Fixed format for check release optionsf3091a9dakata-ctl: Add kata-ctl check release optionsa577df8b7tools: Fix indentation on build kernel scriptb087667ackata-deploy: Fix the pod of kata deploy starts to occur an error79cf38e6eruntime-rs: clear OCI spec namespace path62f4603e8runtime-rs: reset rdma cgroup5b6596f54runtime-rs: CreateContainerRequest has Defaulte9e82ce28runtime-rs: fix is_pid_namespace_enabled check8079a9732kata-sys-util: fix issues where umount2 couldn't get the correct path4661ea8d3runtime-rs: fix standalone share fsc5abc5ed4config: speed up rng init when kernel boot for arm643e6114b2etools: Fix indentation for ovmf script7fdbbcda8agent: Drop the Option for LinuxContainer.cgroup_managerd04d45ea0runtime: use pidfd to wait for processes on Linuxe9ba0c11druntime: use exponential backoff for process wait748f22e7dagent: remove sysinfo dependency0019d653druntime-rs: fix high cpu46b38458adocs: Update the rust version in the installation documentation71491a69cruntime: move process wait logic to another function92ebe61feruntime: reap force killed processesfdf0a7bb1runtime-rs: fix the issues mentioned in the code review1d823c4f6runtime-rs: umount and permission controls in sandbox level527b87141runtime-rs: bind mount volumes in sandbox level9ccf2ebe8agent: add signal value to logfb2c142f1runtime-rs: fix some variable names and typos737420469kata-ctl: fix dependency version conflict89574f03fworkflow: call cargo in user's $PATHd4321ab48runtime: Add identification in version for runtime-rsf7fc436beworkflow: fix cargo-deny-runner.yaml syntax error78532154ddocs: Add description for guest SELinux supportc617bbe70runtime: Pass SELinux policy for containers to the agent935476928agent: Add SELinux support for containersa75f99d20osbuilder: Create guest image for SELinuxa9c746f28kernel: Add kernel configs for SELinux86cb05883snap: Fix snapcraft setup (unbreak snap releases)f443b7853build: update golang version to 1.19.3e12db92e4runk: Re-implement start operation using the agent codese723bad0aci: let static checks don't depend on build69aae0227actions: use matrix to refactor static checksa5e4cad4bkata-ctl: add host check for aarch642edbe389druntime-rs: moving only vCPU threads into sandbox controller340e24f17actions: skip some job using "paths-ignore" filter2426ea9bddoc: update runtime-rs "Build and Install"67fe703ffruntime-rs: remove the version number from the commit display message1d93a9346fix(agent): fix iptables binary path in guest1dfd845f5runtime: go fix code for 1.19cd85a44a0tools: Remove extra tab spaces from kata deploy binaries scriptcb199e0eckernel: add CONFIG_X86_SGX into whitelist4b45e1386runtime: don't fail mkdir if the folder is already createdb987bbc57runtime-rs: block on the current thread when setup the networkabb9ebeecpackage: add nydus to release artifacts30a7ebf43runtime: Log invalid devices in QEMU config2539f3186runtime: Use containerd v1.6.8993d05a42docs: change mount-info.json to mountInfo.jsond808adef9runtime-rs: support vhost-vsock6b2ef66f0runtime-rs: add conditional compile for virt-sandbox persist6c1e153a6docs: update doc "NVIDIA GPU passthrough"b53171b60agent: check command before do test_ip_tablesa636d426dversions: update nydusd version3bb145c63runtime: Support virtiofs queue size for qemu and make it configurablee80a9f09futils: Add utility function to fetch the kernel version.36545aa81runtime: clh: Re-generate the client codef4b02c224versions: Upgrade to Cloud Hypervisor v28.0e4a6fbadfdocs: update doc "Setup swap device in guest kernel"2f5f575a4log-parser: Simplify checkd94718fb3runtime: Fix gofmt issues16b837509golang: Stop using io/ioutils66aa330d0versions: Update golangci-lintb3a4a1629versions: bump containerd versioneab8d6be1build: update golang version to 1.19.2e80dbc15druntime-rs: workaround Dragonball compilation problemc3f1922dffix(fmt): fix cargo fmt to pass static checka4099dab8tools: Fix indentation of build static firecracker scriptc46814b26runtime-rs:support nydus v5 and v6a04afab74qemu: early exit from Check if the process was stopped7e481f217qemu: set stopped only if StopVM is successful0e3ac66e7clh: return faster with dead clh process from isClhRunning9ef68e0c7clh: fast exit from isClhRunning if the process was stopped2631b08ffclh: don't try to stop clh multiple timesf45fe4f90versions: update vmm-sys-util and related crates to v0.11.08be081730tools: Fix indentation of build static virtiofsd scriptf8f97c1e2feat(shim-mgmt): iptables handler29c75cf12runtime-rs: delete all cargo patches9f70a6949tools: Remove empty spaces from build kernel script57336835ddragonball: add more unit test for device manager233370023dragonball: add test utils.3e9c3f12cdocs: Fix configuration path2adb1c182Dragonball: enable mem_file_path config into hugetlbfs processdaeee26a1cloud-hypervisor: Fix GetThreadIDs function40d514aa2github: Parallelise static checks2508d39b7runtime: added vcpus pinning logics Core VCPU threads pinning logics for issue 4476. Also provided docs.fef8e92afruntime-rs:add hypervisor interface capabilities27b191358runtime-rs: blanks filled & fixes made to virtiofsd launch990e6359bsnap: Unbreak docker installca69a9ad6snap: Use metadata for dependenciesdf092185erunk: Upgrade libseccomp crate to v0.3.0 in Cargo.lock16dca4ecdrunk: Ignore an error when calling kill cmd with --all optionb74c18024runtime-rs: fix shared volume permission issue936fe35acruntime-rs : fix shim source is ambiguous0ed7da30dtools: Fix indentation of build static clh script43fcb8fd0virtiofsd: Not use "link-self-contained=yes" on s390x The compile option link-self-contained=yes asks rustc to use C library startup object files that come with the compiler, which are not available on the target s390x-unknown-linux-gnu. A build does not contain any startup files leading to a broken executable entry point (causing segmentation fault).219919e9fdocs: Fix volumeMounts in SGX usage examplec0f5bc81bcargo: Add Cargo.lock to version control474927ec9gitignore: Add gitignore file699f821e1utils: Add function to drop privelegesa6fb4e2a6versions: bump golangci-lint versionb015f34afruntime-rs: generate config files with the default targetd7bb4b551agent: support systemd cgroup for kata agent144efd1a7docs: update rust runtime installation guideabf4f9b29docs: kata 3.0 Architecture fix readme content error44d8de892agent: remove redundant checks9d286af7bversions: Update Cloud Hypervisor to b4e39427080081ee4871agent: use NLM_F_REPLACE replace NLM_F_EXCL in rtnetlinke95089b71kata-ctl: add basic cpu check for s390x871d2cf2ckata-ctl: Limit running tests to x86 and use native-tls on s390xcbd84c3f5rustjail: Upgrade libseccomp crate to v0.3.0748be0fe3makefile: remove sudo when create symbolic link227e717d2qemu: Re-work static-build Dockerfile72738dc11agent: validate hugepage size is supportedf74e328ffMakefile: fix an typo in runtime-rs makefilef205472b0Makefile: regulate the comment style for the runtime-rs comments9f2c7e47cRevert "kata-ctl: Disable network check on s390x"ac403cfa5doc: Update how-to-run-kata-containers-with-SNP-VMs.md00981b3c0kata-ctl: Disable network check on s390x39363ffbfruntime: remove same functionc322d1d12kata-ctl: arch: Improve check call0bc5baafbsnap: Build virtiofsd using the kata-deploy scriptscb4ef4734snap: Create a task for installing docker7e5941c57virtiofsd: Build inside a container35d52d30fversions: Update TDX QEMU4d9dd8790runtime-rs: fix typo get_contaier_type to get_container_type70676d4a9kata-ctl: improve command descriptions for consistency9eb73d543versions: Update TDX kernel00a42f69ckata-ctl: cargo: 2021 -> 2018fb6327474kata-ctl: rustfmt + clippy fixes1f1901e05dragonball: fix clippy warning for aarch64a343c570edragonball: enhance dragonball ci6a64fb0ebci: skip s390x for dragonball.a743e37daDragonball: delete redundant comments in blk_dev_mgr2b345ba29build: Add kata-ctl to tools listf7010b806kata-ctl: docs: Write basic documentation862eaef86docs: fix a typo in rust-runtime-installation-guide26c043deeci: Add dragonball test781e604c3docs: Reference kata-ctl README15c343cbfkata-ctl: Don't rely on system ssl libsc23584994kata-ctl: clippy: Resolve warnings and reformat133690434kata-ctl: implement CLI argument --check-version-onlyeb5423cb7kata-ctl: switch to use clap derive for CLI handling018aa899ckata-ctl: Add cpu check7c9f9a5a1kata-ctl: Make arch test run at compile timeb63ba66dckata-ctl: Formatting tweakscca7e32b5kata-ctl: Lint fixes to allow the branch to be built8e7bb8521kata-ctl: add code for framework for arch303fc8b11kata-ctl: Add unit tests casesd0b33e9a3versions: Add kata-ctl version entry002b18054kata-ctl: Add initial rust code for kata-ctlb62b18bf1dragonball: fix clippy warning2ddc948d3Makefile: add dragonball components.3fe81fe4adragonball-ut: use skip_if_not_root to skip root case72259f101dragonball: add more unit test for vmm actions9717dc3f7Dragonball: remove redundant comments in event manager9c1ac3d45runtime-rs: return port on agent-url req89e62d4edshim: Ensure pagesize is set when reporting hugetbl stats8d4ced3c8runtime-rs: support ephemeral storage for emptydir046ddc646readme: remove libraries mentioning86ad832e3runtime-rs: force shutdown shim process in it can't exit Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@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.