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

14
我想了解在使用情况方面,gVisorWeave Ignite之间是否有区别。对我来说,它们似乎都在尝试做同样的事情:使虚拟化环境中代码的执行更加安全。
gVisor通过引入runsc进行此操作,该运行时可以启用沙箱容器。而Ignite则是通过使用Firecracker来实现,它在其上下文中也似乎被用作沙盒。
1个回答

19

FirecrackergVisor都是提供沙盒/隔离的技术,但方式不同。

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

Weave Ignite是一个工具,它可以帮助您使用Firecracker在轻量级VM内运行容器,并且使用类似于Docker的良好UX进行操作。

这也在github.com/weaveworks/ignite范围部分中提到。

范围

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

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

关于您问题中的使用案例部分,我认为由于VMs提供更强的隔离性,因此Ignite可以更具生产力。此外,gVisor的方法似乎有相当大的性能成本,如The True Cost of Containing: A gVisor Case Study中所述:
结论 - gVisor可以说比runc更安全 - 不幸的是,我们的分析显示有效限制的真实成本很高:系统调用慢2.2倍,内存分配慢2.5倍,大型下载慢2.8倍,文件打开慢216倍

当前的沙箱方法

enter image description here


使用gVisor进行沙箱隔离

Sandboxing with gVisor


我需要使用gVisor吗?

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

我应该在哪里使用它?

作为一名操作员,你需要使用gVisor来隔离那些不完全可信的应用程序容器。这可能是组织过去信任的开源项目的新版本。这可能是你的团队尚未完全审核或其他任何你不完全确定是否可以信任的东西。毕竟,如果你运行的是你没有编写的开源项目(我们所有人都是如此),你的团队肯定没有编写它,因此适当隔离和保护你的环境以防可能存在未知漏洞是好的安全和好的工程实践。


enter image description here


进一步阅读

我的回答包含以下信息,这些信息在“原样”下是在引用部分中的,我建议您进一步阅读:


1
非常感谢您的回答和进一步阅读部分! :) - User12547645
1
@User12547645 今天我偶然发现了这篇文章: The True Cost of Containing: A gVisor Case Study 其中提到 "简单的系统调用在gVisor上至少慢2.2倍;更糟糕的是,在外部tmpfs上打开和关闭文件要慢216倍。I/O成本也很高;读取小文件慢11倍,下载大文件慢2.8倍。" (来自Cindy Sridharan) - tgogos
1
Windows WSL1子系统与gVisor具有类似的架构,其中I/O性能非常缓慢且明显。据我所知,WSL2更像是Firecracker,他们放弃了模拟的Linux内核并运行了真正的内核。性能大幅提升。 - Kashif Shaikh

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