我想知道gVisor和Weave Ignite在用例方面是否有区别(如果有的话)。对我来说,他们俩似乎都在尝试类似的事情:让虚拟化环境中的代码执行更加安全。
gVisor 是通过引入runsc
一个启用沙盒容器的运行时来做到这一点的,而 Ignite 正在通过使用Firecracker来做到这一点,在他们的上下文中,它似乎也被用作沙箱。
我想知道gVisor和Weave Ignite在用例方面是否有区别(如果有的话)。对我来说,他们俩似乎都在尝试类似的事情:让虚拟化环境中的代码执行更加安全。
gVisor 是通过引入runsc
一个启用沙盒容器的运行时来做到这一点的,而 Ignite 正在通过使用Firecracker来做到这一点,在他们的上下文中,它似乎也被用作沙箱。
Firecracker和gVisor都是提供沙盒/隔离的技术,但方式不同。
Weave Ignite是一个工具,它可以帮助您使用 Firecracker 在轻量级虚拟机中运行容器,并且还可以通过良好的 UX 来实现这一点,类似于使用 Docker。
github.com/weaveworks/ignite的Scope部分也提到了这一点
范围
Ignite 与 Kata Containers 或 gVisor 不同。它们不允许您运行真正的虚拟机,而只是将容器包装在提供某种安全边界(或沙箱)的新层中。
另一方面,Ignite 让您可以轻松且超快速地运行成熟的 VM,但使用熟悉的容器 UX。这意味着您可以“向下移动一层”并开始管理为例如 Kubernetes 集群供电的 VM 队列,但仍将 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 隔离不完全受信任的应用程序容器。这可能是您的组织过去信任的开源项目的新版本。这可能是您的团队尚未完全审查的新项目,或者您不确定是否可以在集群中信任的任何其他项目。毕竟,如果您正在运行一个不是您(我们所有人)编写的开源项目,那么您的团队肯定没有编写它,因此正确隔离和保护您的环境将是良好的安全性和良好的工程设计,以防万一可能是一个未知的漏洞。
我的回答包含来自以下来源的信息,这些信息在“按原样”获取时位于引用部分,我建议将它们进一步阅读: