这是 Kata 迄今为止最令人兴奋的版本,其中包括对 Firecracker hypervisor、s390x 架构的支持,并提供了与 containerd 项目集成的方法。
Firecracker 支持
因为知道在功能、资源占用和安全性之间总是存在权衡,Kata Containers 项目在设计时就考虑到要支持多个 hypervisor。在 1.4 版本中增加了 NEMU,比 QEMU 更加轻量级。11 月底,AWS 宣布推出他们的 Firecracker hypervisor。Firecracker GitHub 主页上写道:“Firecracker 采用了简约设计,去除了不必要的设备和面向客户的功能,以减少每个微虚拟机的内存占用和攻击表面积。这样可以提高安全性,缩短启动时间,并提高硬件利用率。”
这对于 Kata 社区来说是一件令人兴奋的事情,因为它解决了最终用户对简单使用场景下的最小 hypervisor 解决方案的需求。
Kata Containers1.5 版本引入了对 Firecracker hypervisor 的支持,这是对现有 QEMU 的补充。考虑到 Firecracker 可用功能的权衡,我们希望人们将 Firecracker 用于功能受限的工作负载,并在更高级的工作负载上使用最小的 QEMU(例如,如果需要设备分配,可以使用 QEMU)。
例如,在单个集群中使用 runc、kata-qemu(kata-runtime 的 QEMU 配置)和 kata-fc(kata-runtime 的 Firecracker 配置)是很典型的,如下图所示:
要实现这样的配置,必须将集群配置为使用 CRI-O 或 containerd,以及 Kubernetes 的 runtimeClass 功能。containerd 正在开发当中,现在只有 CRI-O 支持 devicemapper 存储驱动器。通过在 Kubernetes 和 CRI-O 中配置 runtimeClass,最终用户可以在每个工作负载上选择他们喜欢的隔离类型。使用 CRI-O、Kata Containers 和 Firecracker VMM 的设置可以在这个截屏视频中看到:https://asciinema.org/a/219790。
为了帮助开发人员快速开始在 Kubernetes 中使用 Kata + runtimeClass,这里提供了一个沙盒https://github.com/clearlinux/cloud-native-setup/blob/master/clr-k8s-examples/。
Firecracker hypervisor 采用了极简设计。因此,在使用 Kata + Firecracker 时,在 Kubernetes 的功能方面总是会存在差距,导致无法动态调整 pod 的内存和 CPU 定义。同样,由于 Firecracker 只支持基于块的存储驱动器和卷,现在需要用到 devicemapper。这在 Kubernetes + CRI-O 和 Docker 18.06 版本中可用。开发人员正在添加更多的存储驱动器选项。有关 Kata + Firecracker 的当前限制,请参阅https://github.com/kata-containers/documentation/issues/351。
我们很高兴能与 Firecracker 团队合作,并继续改进对 Firecracker VMM 的支持,以及与 Kubernetes 的集成。
s390x 架构支持
在来自 IBM 的社区成员的帮助下,Kata Containers1.5 版本增加了对 IBM Z-Series 的支持。
containerd 集成
去年六月,Michael Crosby 开始了一个向 containerd 添加填充 API 的讨论,以便更好地支持基于 VM 的运行时,比如 Kata Containers。Kata Containers1.5 版本提供了可以满足该填充 API 的初始实现,极大简化了 Kata Containers 与 containerd 的集成方式,如下所示:
除了明显减少了组件之外,API 还为 Kata Containers 带来了更好的接口,比如可以直接从 Kata 运行时访问容器级别的统计信息,这在之前的命令行界面中是不可能的。同样,因为存储器挂载是由 containerd-shim 来完成的,所以实现基于块的 containerd-shim-kata-v2 快照程序支持应该会更加简单。
Kata 社区一直非常积极地使用 CRI-O 项目来定义和利用类似的接口,不过这项工作仍然在进行中,目标是在 1.6 版本中发布。
期待
从 1.5 版本开始,我们有很多令人兴奋的工作要做,以便更好地融入生态系统。我们也有很多不是那么亮眼的工作:降低复杂性、提升安全性、提升测试覆盖率和稳定性,以及为在生产环境中使用 Kata 的用户提供帮助。我最热衷于那些不起眼的工作!
读者可以通过以下渠道与社区取得联系:
Slack 或 IRC Freenode:#kata-dev
周会:https://etherpad.openstack.org/p/katacontainers-2019-architecture-committee-mtgs
英文原文:https://medium.com/kata-containers/kata-containers-1-5-release-99acbaf7cf34
评论