我想了解在使用情况方面,gVisor和Weave Ignite之间是否有区别。对我来说,它们似乎都在尝试做同样的事情:使虚拟化环境中代码的执行更加安全。
gVisor通过引入
gVisor通过引入
runsc
进行此操作,该运行时可以启用沙箱容器。而Ignite则是通过使用Firecracker来实现,它在其上下文中也似乎被用作沙盒。runsc
进行此操作,该运行时可以启用沙箱容器。而Ignite则是通过使用Firecracker来实现,它在其上下文中也似乎被用作沙盒。Firecracker和gVisor都是提供沙盒/隔离的技术,但方式不同。
Weave Ignite是一个工具,它可以帮助您使用Firecracker在轻量级VM内运行容器,并且使用类似于Docker的良好UX进行操作。
这也在github.com/weaveworks/ignite的范围部分中提到。
关于您问题中的使用案例部分,我认为由于VMs提供更强的隔离性,因此Ignite可以更具生产力。此外,gVisor的方法似乎有相当大的性能成本,如The True Cost of Containing: A gVisor Case Study中所述:范围
Ignite与Kata Containers或gVisor不同。它们不允许您运行真正的VM,而只是在新层中包装容器以提供某种安全边界(或沙盒)。
另一方面,Ignite使您能够轻松快速地运行完整的VM,但具有熟悉的容器UX。这意味着您可以“向下移动一层”,开始管理驱动例如Kubernetes集群的VM群,但仍然像容器一样打包您的VM。
不需要。如果你正在运行生产工作负载,请甚至不要考虑它!现在,这只是一个比喻性的科学实验。这并不是说你将来可能不想使用它,但目前还没有必要。我对它解决进程隔离的方式没有任何问题,我认为这是个好主意。在采用这项技术之前,你应该花时间探索其他替代方案。
作为一名操作员,你需要使用gVisor来隔离那些不完全可信的应用程序容器。这可能是组织过去信任的开源项目的新版本。这可能是你的团队尚未完全审核或其他任何你不完全确定是否可以信任的东西。毕竟,如果你运行的是你没有编写的开源项目(我们所有人都是如此),你的团队肯定没有编写它,因此适当隔离和保护你的环境以防可能存在未知漏洞是好的安全和好的工程实践。
我的回答包含以下信息,这些信息在“原样”下是在引用部分中的,我建议您进一步阅读: