Kata Containers和gVisor有何区别?

25
据我了解,Kata Containers 是一个实现轻量级虚拟机(VMs)的标准化方案,其感觉和表现类似于容器,但提供了 VMs 的工作负载隔离和安全优势。
另一方面,gvisor 是容器的用户空间内核。它限制了应用程序可以访问的主机内核表面,同时仍然使应用程序能够访问其所需的所有功能。
据我所知,这两种技术都试图将 Linux 空间 添加到容器中以增强安全性。
我的问题是它们之间有何不同?它们的功能是否存在重叠?

回答这个问题比较好的方式是看gcloud的博客文章:https://cloudplatform.googleblog.com/2018/05/Open-sourcing-gVisor-a-sandboxed-container-runtime.html 。如果以上文章不够用,或许可以编辑您的问题并提供更具体的细节。 - Jonah Benton
请纠正我,如果我理解错误。gVisor将内核空间带入用户空间,提供了另一条控制线路。因此,它变成了 {[用户空间+ 客户机内核空间] + 内核空间}。然而,Kata容器提供了 {用户空间 + 内核空间} - Suresh Vishnoi
除了内核空间/用户空间边界之外,现代芯片还能够维护另一个硬件边界。单个芯片现在可以有效地维护多个不同的“虚拟机”上下文,每个上下文都有自己的内核空间/用户空间边界。 - Jonah Benton
因此,普通容器在单个虚拟机的上下文中运行,从而在单个共享内核内的各个进程之间创建更大的隔离。gVisor在用户空间提供进一步的隔离-假装是容器的共享内核,但不允许所有系统调用通过到真正的内核。Kata使用“虚拟机”上下文功能,基本上为每个容器创建轻量级虚拟机。 - Jonah Benton
2
Kata本质上是英特尔的一个项目,旨在确保它在容器生态系统中保持相关性。这是一种高度安全但更重量级的容器实现,因为切换机器上下文有点昂贵。gVisor则是轻量级-单个虚拟机上下文、单个共享内核,但现在有了一个额外的用户空间层,以保护共享内核。 - Jonah Benton
感谢您提供全面的视角,现在我明白了。保持容器轻量化是至关重要的。 - Suresh Vishnoi
2个回答

18

根据我的了解:

Kata Containers

  • 在轻量级QEMU/KVM虚拟机上构建了完整的内核
    • 新版本中已经优化了内核。
  • 让系统调用自由地通过
  • 由于虚拟机层,存在性能损失。目前还不清楚比gVisor慢或快多少。
  • 理论上,启动时间较慢。
  • 可以运行任何应用程序。
  • 如果超级管理程序和硬件支持,可以在嵌套虚拟化环境中运行。

gVisor

  • 用户空间部分内核。
  • 截获系统调用
  • 由于系统调用过滤引起的运行时性能损失。目前还不清楚比Kata慢或快多少。
  • 理论上,启动时间更快。
  • 只能运行使用受支持的系统调用的应用程序。
  • 理论上,可能不需要嵌套虚拟化。

你好,我有一个后续问题:为什么Kata的客户内核比Gvisor的大,尽管已经进行了优化?@Rico - yaoxin jing

7

这里有一个简单的解释:

Kata Containers

Kata Containers是一种运行在硬件上的容器。

传统虚拟机很安全,但不如容器快。Kata Containers项目就像是一个轻量级的虚拟机,但速度却像容器一样快。换句话说,Kata Containers解决了虚拟机速度慢的问题。

gVisor

容器运行在名为gVisor的沙盒中(每个容器都有一个沙盒)。

容器速度快,但不如虚拟机安全。gVisor就像是一个沙盒,每个容器都应该运行在一个沙盒中。换句话说,gVisor解决了容器安全性的问题。


似乎 KataContainers 的安全性不亚于 gvisor,而且没有性能损失。 - Pithikos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接