Update to latest master code. Changes: fa0fdc6 cargo: Update Cargo.lock for the 0.4.0 release cec884e release: v0.4.0 6444e29 docs: Add CPU hot plug documentation a002093 build(deps): bump anyhow from 1.0.23 to 1.0.25 43f0478 build(deps): bump thiserror from 1.0.6 to 1.0.9 664431f vsock: vhost_user: vfio: Fix potential host memory overflow 1e97d14 README: Update for newer distribution support e8e21ae README: Update the --cpus command line examples a40a70a ci: Rely on latest virtiofsd version f0b7412 vmm: device_manager: Add all virtio devices to the migratable list 37557c8 vmm: vm: Implement the Pausable trait 9756fc2 vmm: cpu_manager: Implement the Pausable trait 35dd152 vmm: device_manager: Implement the Pausable trait a122da4 vm-virtio: vhost: Implement the Pausable trait for all vhost-user devices dae0b2e vm-virtio: Implement the Pausable trait for all virtio devices 35d7721 vmm: Convert virtio devices to Arc<Mutex<T>> 5450de0 cargo: Do not run fmt on anyhow's build code 0361df4 vm-device: Initial Migratable trait 36daf9c ci: Skip testing RFC or WIP PRs 64c5e3d vmm: api: Adjust FsConfig for OpenAPI 4bfd51c vmm: api: Match VhostUserBlkConfig defaults between CLI and HTTP API 1c2587f vmm: api: Match VhostUserNetConfig defaults between CLI and HTTP API 5e0bbf9 vmm: Don't factorize vhost-user configurations 793327c vmm: api: Make ConsoleConfig default match between CLI and HTTP API cc08c44 vmm: api: Make MemoryConfig default match between CLI and HTTP API 5a72225 vmm: api: Update CpuConfig name to match the internal name f7c215d cli: Fix default CPU argument 59ae01f ci: Cancel older builders on Jenkins c61104d vmm: Port to latest vmm-sys-util 4c92f89 ci: Add OpenAPI validation 93bd88e ci: Simplify travis.yml d42ef18 ci: Offload cargo tests to the worker node VM ee528ae vmm: api: Make FsConfig defaults match between CLI and HTTP API befd342 vmm: api: Make NetConfig defaults match between CLI and HTTP API eff78f7 resources: Prevent kernel config interactive shell from showing up 99e608c openapi: Fix schema f994665 vmm: Reduce the minimum IRQ constant ba59c62 vmm, devices: Remove hardcoded IRQ number for GED device ce1bd9c resources: turn on CONFIG_ACPI_REDUCED_HARDWARE_ONLY 0374c3d build(deps): bump ssh2 from 0.5.0 to 0.6.0 aa94e9b Revert "vmm: api: Modify FsConfig to be OpenAPI friendly" 9b1ba14 vmm: Delegate device related ACPI DSDT table work to DeviceManager 60e6609 vmm: Delegate CPU related ACPI tables to CpuManager defc5dc vmm: api: Modify FsConfig to be OpenAPI friendly 66e00ce ci: Extend VFIO integration test 59d0171 vmm: Remove kernel based IOAPIC handling from the device manager afea6a1 vmm: Stop initialising kernel based IOAPIC/PIC 9b1cb96 vmm: Remove pin based interrupt setup for virtio devices 72fb687 vmm: Check for required capabilities 904b1ea build(deps): bump unicode-width from 0.1.6 to 0.1.7 fcf92d8 tests: Add rebooting to the CPU hotplug test f98b16f vmm: Update the configuration to preserve hot-plug CPUs after reboot 1722708 vmm: Switch to storing VmConfig inside an Arc<Mutex<>> c063bb8 vmm: acpi: Make GED interrupt edge triggered e1af17d vmm: Restore tty to canonical mode when SIGTERM or SIGINT received 44d026b build(deps): bump serde_json from 1.0.43 to 1.0.44 a1285ea build(deps): bump cc from 1.0.47 to 1.0.48 23929f4 vfio: Don't override MSI Enable bit through VFIO ioctl 1dfd60b vfio: use correct flags to disable interrupts 5208ff8 vmm: Detect and handle AMD SME (Secure Memory Encryption) dcfd6ff build(deps): bump serde_json from 1.0.42 to 1.0.43 08258d5 vfio: pci: Allow multiple devices to be passed through 4115fa8 vfio: pci: Update irqfd registration 1379abb pci: msi: Fix MSG_CTL update through 32 bits write c81e808 docs: Update instructions regarding virtiofsd 17badfb vmm: cpu: Call vcpu configure() on the vCPU thread 1350306 api: Fix OpenAPI specification entries e1ff142 tests: Remove MSI only test from test_serial_off e083064 tests: Add integration test for hotplugging vCPUs 66a31c1 vmm: acpi: Upon GED interrupt notify on all vCPUs 48bf141 vmm: Trigger a hotplug device notification when resizing b629727 vmm: acpi: Add a CTFY method to notify on all CPU objects ae9359c vmm: acpi: Create the CPU entries in the DSDT for all vCPUs 791ca33 vmm: device_manager: Add ability to notify via GED device 623755c devices: Add ACPI GED device 7ad68d4 vmm: device_manager: Allocate I/O port for ACPI shutdown device 86339b4 vmm: Add HTTP API to resize the VM e7d4eae vmm: cpu: Add support for starting more vCPU threads 0ef9999 vmm: cpu: Support only partially configuring the vCPU c8b3041 vmm: openapi: Update OpenAPI for CpuConfig struct b6801e3 vmm: cpu: Refactor vCPU thread starting 66d5163 vmm: cpu: Encapsulate vCPU state into its own struct ea19bb0 tests: Add a test to check that the boot vs max cpus work 1bbe48b vmm: acpi: Mark non-boot vCPUs as disabled in the MADT table 4bc8635 tests: Use new "--cpus" syntax for integration tests 82bc07c vmm: Add boot and max vCPU handling to command line parser 7543e00 vmm: Use new CpuManager accessor to get boot vCPUs df09078 vmm: cpu: Introduce concept of maximum vs boot vCPUs in CpuManager 669d9a8 vhost_user_backend: fix memory region offsetting d378da6 build(deps): bump vcpkg from 0.2.7 to 0.2.8 b1cfdc7 build(deps): bump syn from 1.0.9 to 1.0.11 0f21781 cargo: Bump the kvm and vmm-sys-util crates Fixes: #2343 Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Runtime
This repository contains the runtime for the Kata Containers project.
For details of the other Kata Containers repositories, see the repository summary.
- Introduction
- License
- Platform support
- Download and install
- Quick start for developers
- Architecture overview
- Configuration
- Logging
- Debugging
- Limitations
- Community
- Further information
- Additional packages
Introduction
kata-runtime, referred to as "the runtime", is the Command-Line Interface
(CLI) part of the Kata Containers runtime component. 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.
License
The code is licensed under an Apache 2.0 license.
See the license file for further details.
Platform support
Kata Containers currently works on systems supporting the following technologies:
- Intel VT-x technology.
- ARM Hyp mode (virtualization extension).
- IBM Power Systems.
- IBM Z mainframes.
Hardware requirements
The runtime has a built-in command to determine if your host system is capable of running and creating a Kata Container:
$ kata-runtime kata-check
Note:
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.
rootpermission is needed to check if the system is capable of running Kata containers. In this case, additional checks are performed (e.g., if another incompatible hypervisor is running).
Download and install
See the installation guides available for various operating systems.
Quick start for developers
See the developer guide.
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 contains comments explaining all options.
Note:
The initial values in the configuration file provide a good default configuration. You might need to modify this file if you have specialist needs.
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 command below lists the full paths to the configuration files that the runtime attempts to load. The first path that exists is used:
$ kata-runtime --kata-show-default-config-paths
Aside from the built-in locations, it is possible to specify the path to a
custom configuration file using the --kata-config option:
$ kata-runtime --kata-config=/some/where/configuration.toml ...
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 kata-env
Logging
The runtime provides --log= and --log-format= options. However, the
runtime always logs to the system log (syslog or journald).
To view runtime log output:
$ sudo journalctl -t kata-runtime
For detailed information and analysis on obtaining logs for other system
components, see the documentation for the
kata-log-parser
tool.
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.