Kata Containers 现在在 Tumbleweed 中可用

2019 年 8 月 15 日 | Marco Vedovati | 无许可

Kata

Kata Containers 是一个开源容器运行时,旨在与容器生态系统无缝集成。

我们现在很高兴地宣布,Kata Containers 包已正式在 openSUSE Tumbleweed 仓库中提供。

考虑到 Kata Containers(又名 Kata)在满足容器生态系统安全需求方面的作用,以及它对 openSUSE 和 Kubic 的重要性,花些篇幅解释为什么这是一个好消息是值得的。

什么是 Kata

如前所述,Kata 是一种专注于安全性和与现有容器生态系统易于集成的容器运行时。如果您想知道什么是容器运行时,Sascha 的这篇博文 将为您提供关于该主题的清晰介绍。

当运行源不可完全信任的容器镜像,或者当允许其他用户在您的平台上运行他们自己的容器时,应该使用 Kata。

传统上,容器与主机进程共享相同的物理和操作系统 (OS) 资源,并且特定的内核功能(如命名空间)用于在主机和容器进程之间提供隔离层。相比之下,Kata 容器在轻量级虚拟机内部运行,增加了额外的隔离和安全层,从而最大限度地减少主机攻击面并减轻容器突破的后果。尽管有这一额外的层,Kata 凭借 KVM 硬件虚拟化实现了令人印象深刻的运行时性能,并且在配置为使用简约的虚拟机管理器 (VMM)(如 Firecracker)时,可以在单个主机上打包高密度的微虚拟机。

如果您想了解更多关于 Kata 的特性和性能

  • katacontainers.io 是一个很好的起点。
  • 对于更偏向 SUSE 的内容,Flavio 在 SUSECON 2019 上发表了一篇关于 Kata 的有趣的演讲
  • Kata 团队在 katacontainers.slack.com 上活跃,并乐于解答任何问题。

为什么对 Kubic 和 openSUSE 来说很重要

SUSE 一直是容器项目的早期且重要的开源贡献者,相信这项技术是部署和运行软件的未来。

最相关的例子是 openSUSE Kubic 项目,它是一个经过认证的 Kubernetes 发行版和由 openSUSE 社区构建的一组与容器相关的技术。

我们还一直在知名的容器项目(如 runC、libpod 和 CRI-O)中工作,并且从一年前开始也与 Kata 合作。

Kata 补充了其他更流行的容器运行方式,因此我们致力于改进它并确保它可以与我们的产品无缝集成。

如何使用

虽然 Kata 可以作为独立的软件使用,但其预期用途是在集成到像 PodmanCRI-O 这样的容器引擎中时作为运行时使用。

本节展示了在 openSUSE Tumbleweed 上使用 Podman 启动 Kata 容器的快速简便方法。

首先,安装 Kata 包

$ sudo zypper in katacontainers

确保您的系统提供 Kata 所需的硬件虚拟化功能集

$ sudo kata-runtime kata-check

如果没有报告任何错误,太好了!您的系统现在已准备好运行 Kata 容器。

如果您尚未安装,请使用以下命令安装 podman:

$ sudo zypper in podman

就这样了。尝试使用以下命令运行您的第一个 Kata 容器:

$ sudo podman run -it --rm --runtime=/usr/bin/kata-runtime opensuse/leap uname -a
Linux ab511687b1ed 5.2.5-1-kvmsmall #1 SMP Wed Jul 31 10:41:36 UTC 2019 (79b6a9c) x86_64 x86_64 x86_64 GNU/Linux

与 runC 的区别

现在您已经启动并运行了 Kata,让我们看看 Kata 和 runC(最流行的容器运行时)之间的一些区别。

使用 runC 启动容器时,可以在主机进程树中看到容器进程

...
10212 ?        Ssl    0:00 /usr/lib/podman/bin/conmon -s -c <ctr-id> -u <ctr-id>
10236 ?        Ss     0:00  \_ nginx: master process nginx -g daemon off;
10255 ?        S      0:00      \_ nginx: worker process
10256 ?        S      0:00      \_ nginx: worker process
10257 ?        S      0:00      \_ nginx: worker process
10258 ?        S      0:00      \_ nginx: worker process
...

使用 Kata 时,容器进程反而运行在一个专用的 VM 中,因此它们不与主机共享 OS 资源

...
10651 ?        Ssl    0:00 /home/marco/go/src/github.com/containers/conmon/bin/conmon -s -c <ctr-id> -u <ctr-id>
10703 ?        Sl     0:01  \_ /usr/bin/qemu-system-x86_64 -name sandbox-<ctr-id> -uuid e54ee910-2927-456e-a180-836b92ce5e7a -machine pc,accel=kvm,kernel_ir
10709 ?        Ssl    0:00  \_ /usr/lib/kata-containers/kata-proxy -listen-socket unix:///run/vc/sbs/<ctr-id>/proxy.sock -mux-socket /run/vc/vm/829d8fe0680b
10729 ?        Sl     0:00  \_ /usr/lib/kata-containers/kata-shim -agent unix:///run/vc/sbs/<ctr-id>/proxy.sock -container <ctr-id>
...

未来计划

我们正在继续努力,通过以下方式为您提供在使用 Kata 在 openSUSE 上的出色用户体验:

  • 提高软件包质量和稳定性,
  • 定期发布,
  • 确保 Kata 与其他容器项目(如 Podman 和 CRI-O)良好集成。

从长远来看,我们将 Kata 集成到 Kubic 发行版和 CaaSP 中,使其成为管理容器的最完整和最安全的解决方案之一。

类别: 博客

标签

分享这篇文章