Kata 容器
Kata 容器 (原 Clear Containers) 是一个 OCI 兼容的应用容器运行时,旨在通过利用虚拟化技术,将潜在不受信任的进程与宿主系统和其他进程隔离。目前上游支持的虚拟机管理程序有 qemu-desktop、firecracker 和 cloud-hypervisorAUR。
架构
kata-agent
- 在虚拟机监控的客户机沙箱上运行的 supervisor 进程,负责管理其生命周期kata-runtime
- 容器运行时组件,负责处理 OCI 运行时规范指定的命令,并负责启动 shimkata-proxy
(2.0 之前) - 使用 gRPC 在客户机代理和与运行给定沙箱关联的宿主机端进程之间路由 I/O 流和信号kata-shim
(2.0 之前) - 容器进程监视器和收割器kata-ksm-throttler
(可选, 2.0 之前) -kata-linux-container
- 用于启动作为容器/Pod 沙箱的虚拟机的已打补丁的内核kata-containers-image
- 用于生成 VM 沙箱的 initramfs 和 rootfs 镜像
用法
默认情况下,Kata 从 /etc/kata-containers/configuration.toml
中获取其配置,但这可以通过 KATA_CONF_FILE
环境变量提供配置路径来覆盖。请务必从 /usr/share/defaults/kata-containers/configuration-qemu.toml
初始化配置。
v1
Docker
为了将 Kata 容器与 Docker 一起使用,用户需要在 /etc/docker/daemon.json
中将其添加到受支持的运行时中
{ "runtimes": { "kata": { "path": "/usr/bin/kata-runtime" } } }
要将其用作 Docker 的默认运行时: {"default-runtime": "kata"}
。
要将其与 Firecracker 虚拟机管理程序一起使用,由于其限制,必须使用 devicemapper
存储驱动程序 [1]: {"storage-driver": "devicemapper"}
。
之后,您可以使用 runtime 键: docker run --runtime kata --rm -ti archlinux/base /bin/bash
。
Podman
运行容器: podman --runtime /usr/bin/kata-runtime run --rm -ti archlinux/base /bin/bash
。
请记住,Kata VM 沙箱在概念上映射到 Kubernetes Pod 或共享 netns,而不仅仅是单个容器。
v2
安装运行时 kata-runtime-binAUR,内核 linux-kata-binAUR 和 initrd 与 rootfs 集 kata-containers-image-binAUR。
Docker 在 Docker Engine 23.0 [2] 中添加了对 OCI 兼容运行时的支持。要使用 Kata 运行 Docker 容器: docker run --runtime io.containerd.kata.v2
Containerd CLI
# ctr image pull docker.io/library/archlinux:latest # ctr run --rm -t --runtime io.containerd.kata.v2 docker.io/archlinux/base:latest example-container-name date