跳到主要内容

安全容器运行时 Kata

· 阅读需 4 分钟

传统的轻量级容器基于 Linux namespace 和 cgroup 进行容器隔离,在带来轻量、简洁、高效的同时,也带来了安全上的隐患。

共享内核的隐患

容器虽然提供了一个与系统中其它进程资源相隔离的执行环境,但与宿主机是共享内核的。如果其中某一个容器被攻击,进而把宿主机的内核攻掉了,那么其他容器势必都会崩溃,后果不堪设想。

那么有没有既安全又比较高效的容器技术呢?于是便出现了 Kata 容器技术。

Kata Containers - Open Source Container Runtime Software

Kata 的实现思路

Kata 实际上是通过创建轻量级虚拟机实现容器之间的资源隔离,再在虚拟机中运行容器运行时。这样容器就在专用内核中运行,提供网络、I/O 和内存的隔离,并可以通过虚拟化 VT 扩展利用硬件强制隔离。提供安全性的同时,它仍然有很高的性能。虽然需要损失部分性能(目前版本已经到了 3.0,性能已有大幅度提高),但好处也是显而易见的:单个容器出现问题、被恶意攻击,绝对不会影响到宿主机,间接保护了其他运行中的容器。

开源地址

Github : https://github.com/kata-containers/kata-containers

特点

Kata Containers 还具有以下特点:

  1. 灵活性:Kata Containers 可以在多种操作系统和容器运行时环境中运行。它支持多种操作系统,如 Linux、Windows 和 FreeBSD,并且可以与多种容器运行时环境,如 Docker、CRI-O 和 containerd 兼容。
  2. 可扩展性:Kata Containers 可以轻松地扩展到大规模部署中。它可以集成到 Kubernetes 等容器编排平台中,从而可以管理大量的容器。
  3. 安装简便:Kata Containers 的安装非常简单。它可以通过包管理工具(如 apt、yum 或 zypper)进行安装,并且有一个方便的命令行工具,可以帮助用户快速配置和启动容器。
  4. 社区支持:Kata Containers 有一个活跃的开源社区,由全球各地的开发人员共同维护和发展。这个社区提供了各种文档、教程和支持,可以帮助用户更好地了解和使用 Kata Containers。
  5. 安全:在专用内核中运行,提供网络、I/O 和内存的隔离,并且可以利用具有虚拟化 VT 扩展的硬件强制隔离。
  6. 兼容性:支持行业标准,包括 OCI 容器格式、Kubernetes CRI 接口,以及传统虚拟化技术。
  7. 轻量:消除了在成熟的 VM 中嵌套容器的要求。
  8. 高性能:提供与标准 Linux 容器接近相同的性能(性能还是存在损耗)。

不足

Kata Containers 的部分缺点:

  1. 性能损失:虽然 Kata Containers 的性能已经大幅度提高,但相对于传统的 Linux 容器来说,它仍然会有一定的性能损失。这是因为 Kata Containers 使用了轻量级虚拟机来实现容器隔离,从而增加了一些额外的开销。
  2. 安装和配置复杂:与传统的 Linux 容器相比,Kata Containers 的安装和配置可能会更加复杂。用户需要安装和配置虚拟化软件,如 QEMU 和 KVM,以及 Kata Containers 运行时等组件。
  3. 对硬件要求高:Kata Containers 需要使用支持虚拟化 VT 扩展的硬件,这可能会限制它在一些老旧的服务器上的使用。
  4. 生态系统不够成熟:虽然 Kata Containers 有一个活跃的开源社区,但与一些其他容器技术相比,它的生态系统可能还不够成熟。这意味着用户可能需要自己编写一些工具或插件来满足其特定的需求。

小结

Kata 的核心思路是用轻量级虚拟机换取内核级隔离:每个容器跑在专用内核里,攻破单个容器不会波及宿主机和其他容器。代价是一定的性能损耗、更复杂的安装配置,以及对硬件虚拟化能力的要求。它并不是要取代传统容器,而是提供了一种新的取舍。如果业务涉及多租户或对隔离性要求较高,值得为这部分负载启用 Kata;反之,标准 Linux 容器仍是更简单的选择。

评论 / COMMENTS