Kata 容器

来自 ArchWiki

Kata 容器 (原 Clear Containers) 是一个 OCI 兼容的应用容器运行时,旨在通过利用虚拟化技术,将潜在不受信任的进程与宿主系统和其他进程隔离。目前上游支持的虚拟机管理程序有 qemu-desktopfirecrackercloud-hypervisorAUR

架构

  • kata-agent - 在虚拟机监控的客户机沙箱上运行的 supervisor 进程,负责管理其生命周期
  • kata-runtime - 容器运行时组件,负责处理 OCI 运行时规范指定的命令,并负责启动 shim
  • kata-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

此文章或章节已过时。

原因: v1 软件包已从 AUR 中删除,因为它们是遗留的且未维护。(在 Talk:Kata Containers 中讨论)

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

此文章或章节已过时。

原因: v2 软件包都已过时。(在 Talk:Kata Containers 中讨论)

安装运行时 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

参见