docs/design/kata-design-requirements.md
The Kata Containers runtime MUST fulfill all of the following requirements:
The Kata Containers runtime MUST implement the OCI runtime specification and support all the OCI runtime operations.
runc CLI compatibilityIn theory, being OCI compatible should be enough. In practice, the Kata Containers runtime
should comply with the latest stable runc CLI. In particular, it MUST implement the
following runc commands:
createdeleteexeckilllistpausepsstartstateversionThe Kata Containers runtime MUST implement the following command line options:
--console-socket--pid-fileThe Kata Containers project MUST provide two interfaces for CRI shims to manage hardware virtualization based Kubernetes pods and containers:
runc compatible command line interface, as described in the previous section.
This interface is used by implementations such as CRI-O and containerd, for example.frakti CRI shim is an example of such a consumer.The Kata Containers runtime MUST NOT be architecture-specific. It should be able to support multiple hardware architectures and provide a modular and flexible design for adding support for additional ones.
The Kata Containers runtime MUST NOT be tied to any specific hardware virtualization technology, hypervisor, or virtual machine monitor implementation. It should support multiple hypervisors and provide a pluggable and flexible design to add support for additional ones.
The Kata Containers runtime MUST support nested virtualization environments.
In order for containers to directly consume host hardware resources, the Kata Containers runtime MUST provide containers with secure pass through for generic devices such as GPUs, SRIOV, RDMA, QAT, by leveraging I/O virtualization technologies (IOMMU, interrupt remapping).
The Kata Containers runtime MUST support accelerated and user-space-based I/O operations
for networking (e.g. DPDK) as well as storage through vhost-user sockets.
The Kata Containers runtime MUST support scalable I/O through the SRIOV technology.
A compelling aspect of containers is their minimal overhead compared to bare metal applications. A container runtime should keep the overhead to a minimum in order to provide the expected user experience. The Kata Containers runtime implementation SHOULD be optimized for:
Each Kata Containers runtime pull request MUST pass at least the following set of container-related tests:
The Kata Containers runtime implementation MUST use structured logging in order to namespace log messages to facilitate debugging.