kata-containers/pulls#3771 added TDX support for Cloud Hypervisor, but two big things got overlooked while doing that. 1. virtio-fs, as of now, cannot be part of the trust boundary, so the Confidential Guest will not be using it. 2. virtio-block hotplug should be enabled in order to use virtio-block for the rootfs (used with the devmapper plugin). When trying to use cloud-hypervisor with TDX using virtio-fs, we're facing the following error on the guest kernel: ``` virtiofs virtio2: device must provide VIRTIO_F_ACCESS_PLATFORM ``` After checking and double-checking with virtiofs and cloud-hypervisor developers, it happens as confidential containers might put some limitations on the device, so it can't access all of the guests' memory and that's where this restriction seems to be coming from. Vivek mentioned that virtiofsd do not support VIRTIO_F_ACCESS_PLATFORM (aka VIRTIO_F_IOMMU_PLATFORM) yet, and that for ecrypted guests virtiofs may not be the best solution at the moment. @sboeuf put this in a very nice way: "if the virtio-fs driver doesn't support VIRTIO_F_ACCESS_PLATFORM, then the pages corresponding to the virtqueues and the buffers won't be marked as SHARED, meaning the VMM won't have access to it". Interestingly enough, it works with QEMU, and it may be due to some change done on the patched QEMU that @devimc is packaging, but we won't take the path to figure out what was the change and patch cloud-hypervisor on the same way, because of 1. Fixes: #3810 Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
Runtime
Binary names
This repository contains the following components:
| Binary name | Description |
|---|---|
containerd-shim-kata-v2 |
The shimv2 runtime |
kata-runtime |
utility program |
For details of the other Kata Containers repositories, see the repository summary.
Introduction
The containerd-shim-kata-v2 binary is the Kata
Containers shimv2 runtime. It leverages the
virtcontainers
package to provide a high-performance standards-compliant runtime that creates
hardware-virtualized Linux containers running on Linux hosts.
The runtime is OCI-compatible, CRI-O-compatible, and Containerd-compatible, allowing it to work seamlessly with both Docker and Kubernetes respectively.
Download and install
See the installation guides available for various operating systems.
Architecture overview
See the architecture overview for details on the Kata Containers design.
Configuration
The runtime uses a TOML format configuration file called configuration.toml.
The file is divided into sections for settings related to various
parts of the system including the runtime itself, the agent and
the hypervisor.
Each option has a comment explaining its use.
Note:
The initial values in the configuration file provide a good default configuration. You may need to modify this file to optimise or tailor your system, or if you have specific requirements.
Configuration file location
Runtime configuration file location
The shimv2 runtime looks for its configuration in the following places (in order):
-
The
io.data containers.config.config_pathannotation specified in the OCI configuration file (config.jsonfile) used to create the pod sandbox. -
The containerd shimv2 options passed to the runtime.
-
The value of the
KATA_CONF_FILEenvironment variable.
Utility program configuration file location
The kata-runtime utility program looks for its configuration in the
following locations (in order):
-
The path specified by the
--configcommand-line option. -
The value of the
KATA_CONF_FILEenvironment variable.
Note: For both binaries, the first path that exists will be used.
Hypervisor specific configuration
Kata Containers supports multiple hypervisors so your configuration.toml
configuration file may be a symbolic link to a hypervisor-specific
configuration file. See
the hypervisors document for further details.
Stateless systems
Since the runtime supports a
stateless system,
it checks for this configuration file in multiple locations, two of which are
built in to the runtime. The default location is
/usr/share/defaults/kata-containers/configuration.toml for a standard
system. However, if /etc/kata-containers/configuration.toml exists, this
takes priority.
The below command lists the full paths to the configuration files that the runtime attempts to load. The first path that exists will be used:
$ kata-runtime --show-default-config-paths
The runtime will log the full path to the configuration file it is using. See the logging section for further details.
To see details of your systems runtime environment (including the location of the configuration file being used), run:
$ kata-runtime env
Logging
For detailed information and analysis on obtaining logs for other system
components, see the documentation for the
kata-log-parser
tool.
Kata containerd shimv2
The Kata containerd shimv2 runtime logs through containerd, and its logs will be sent
to wherever the containerd logs are directed. However, the
shimv2 runtime also always logs to the system log (syslog or journald) using the kata identifier.
Note: Kata logging requires containerd debug to be enabled.
To view the shimv2 runtime logs:
$ sudo journalctl -t kata
Debugging
See the debugging section of the developer guide.
Limitations
See the limitations file for further details.
Community
Contact
See how to reach the community.
Further information
See the project table of contents and the documentation repository.
Additional packages
For details of the other packages contained in this repository, see the package documentation.