我想知道gVisor和Weave Ignite在用例方面是否存在差异(如果有)。对我来说,他们似乎都尝试了类似的事情:使虚拟化环境中的代码执行更加安全。
gVisor通过引入runsc
(一个启用沙盒容器的运行时)来执行此操作,而Ignite通过使用Firecracker来执行此操作,在它们的上下文中,似乎也用作沙盒。
最佳答案
Firecracker和gVisor都是提供沙盒/隔离但以不同方式提供的技术。
爆竹(橙色框)是虚拟机管理器。
gVisor(绿色框)具有控制/过滤到达实际主机的系统调用的体系结构。
Weave Ignite是一个工具,可以帮助您使用Firecracker来在轻量级VM内运行容器,并使用漂亮的UX来实现,类似于使用Docker。
github.com/weaveworks/ignite的“范围”部分中也提到了这一点。
范围
Ignite与Kata Containers或gVisor不同。它们不允许您运行真实的VM,而只能将容器包装在提供某种安全边界(或沙箱)的新层中。
另一方面,Ignite使您可以使用熟悉的容器UX轻松快速地运行功能完善的VM。这意味着您可以“向下移动一层”并开始管理支持以下功能的VM机群: Kubernetes群集,但仍将您的VM打包成容器。
关于您问题的用例部分,我觉得由于VM提供了更强的隔离性,因此Ignite可以更好地投入生产。另外,如在The True Cost of Containing: A gVisor Case Study中提到的,gVisor的方法似乎具有巨大的性能成本:
结论
gVisor可以说比runc
更安全
不幸的是,我们的分析表明,有效包含的真正成本很高:系统调用速度降低2.2倍,内存分配速度降低2.5倍,大型下载速度降低2.8倍,文件打开速度降低216倍。
当前的沙箱方法
用gVisor沙箱
我需要gVisor吗?
否。如果您正在运行生产工作负载,甚至不用考虑!目前,这是一个隐喻性的科学实验。这并不是说您可能不希望在它成熟时使用它。我尝试解决流程隔离的方式没有任何问题,我认为这是个好主意。在将来采用此技术之前,您还应该花一些时间来探索替代方案。
我想在哪里使用它?
作为操作员,您将需要使用gVisor隔离不完全受信任的应用程序容器。这可能是您的组织过去信任的开源项目的新版本。这可能是您的团队尚未完全审查的一个新项目,或者您不确定完全可以信任群集中的任何其他项目。毕竟,如果您正在运行一个未编写的开源项目(我们所有人),那么您的团队当然也没有编写它,因此,如果有适当的隔离和保护环境,那么这将是一个很好的安全性和良好的工程设计。可能是一个未知的漏洞。
进一步阅读
我的回答来自以下来源的信息,这些信息按“原样”显示在报价部分,我建议他们进一步阅读:
What is gVisor?来自Rancher博客
Making Containers More Isolated: An Overview of Sandboxed Container Technologies
Containers, Security, and Echo Chambers博客,作者Jessie Frazelle
The True Cost of Containing: A gVisor Case Study
Kata Containers vs gVisor?
AWS的Firecracker: Lightweight Virtualization for Serverless Applications论文
关于sandbox - 就用例而言,Ignite和gVisor有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56996602/