Ignite 和 gVisor 在用例方面有什么区别?

Use*_*645 9 virtualization sandbox firecracker weave-ignite gvisor

我想知道gVisorWeave Ignite在用例方面是否有区别(如果有的话)。对我来说,他们似乎都在尝试类似的事情:让虚拟化环境中的代码执行更加安全。

gVisor 是通过引入runsc一个运行时来实现沙盒容器的,而 Ignite 是通过使用Firecracker 来实现的,在他们的上下文中,它似乎也被用作沙盒。

tgo*_*gos 11

无论爆竹gVisor是其提供了沙盒/孤立的,而是以不同的方式的技术。

  • Firecracker(橙色框)是一个虚拟机管理器。
  • gVisor(绿框)具有控制/过滤到达实际主机的系统调用的架构。

Weave Ignite是一个工具,它可以帮助您使用 Firecracker 在轻量级 VM 中运行容器,并通过良好的 UX 来实现这一点,类似于使用 Docker。

这也在github.com/weaveworks/igniteScope部分中提到

范围

Ignite 不同于 Kata Containers 或 gVisor。它们不允许您运行真正的 VM,而只是将容器包装在提供某种安全边界(或沙箱)的新层中。

另一方面,Ignite 可让您轻松且超快地运行完整的 VM,但具有熟悉的容器 UX。这意味着您可以“向下移动一层”并开始管理您的 VM 群,例如 Kubernetes 集群,但仍然像容器一样打包您的 VM。

关于您问题的用例部分,我的感觉是,由于提供了更强的隔离 VM,Ignite 可以更适合生产。此外,gVisor 的方法似乎具有显着的性能成本,正如The True Cost of Containing: A gVisor Case Study 中所述

结论

  • gVisor 可以说比 runc
  • 不幸的是,我们的分析表明,有效遏制的真正成本很高:系统调用慢 2.2 倍,内存分配慢 2.5 倍,大下载慢 2.8 倍,文件打开慢 216 倍

当前的沙盒方法

在此处输入图片说明


使用 gVisor 沙盒

使用 gVisor 沙盒


我需要 gVisor 吗?

不。如果您正在运行生产工作负载,请不要考虑它!现在,这是一个比喻性的科学实验。这并不是说您可能不想在它成熟时使用它。我对它试图解决进程隔离的方式没有任何问题,我认为这是一个好主意。在将来采用此技术之前,您还应该花时间探索其他替代方案。

我可能想在哪里使用它?

作为操作员,您会希望使用 gVisor 来隔离不完全受信任的应用程序容器。这可能是您的组织过去信任的开源项目的新版本。它可能是您的团队尚未完全审查的新项目,或者您不能完全确定可以在您的集群中信任的任何其他项目。毕竟,如果您正在运行一个不是您(我们所有人)编写的开源项目,那么您的团队肯定没有编写它,因此如果有的话,正确隔离和保护您的环境将是良好的安全性和良好的工程可能是一个未知的漏洞。


在此处输入图片说明


进一步阅读

我的回答包含来自以下来源的信息,这些信息在“按原样”采用时在引用部分中,我推荐它们以供进一步阅读: