在 vm 中运行容器不会达到他们的目的吗?



自从我的雇主决定将一切转移到Azure和AKS后,我开始更密切地关注kubernetes、容器和虚拟化技术。

据我所知,AKS中的所有东西都将在VM中运行。

GKE和EKS也是如此。亚马逊提供了一些裸机实例,但我不确定这是否适用于kubernetes。

这不会影响表演吗?容器的承诺是在更轻的虚拟化层上运行,而不是在一个完整的vm上运行。

在vm中运行容器不是达到了目的吗?

(Linux(容器是一组1个或多个进程,它们通过Linux命名空间与系统的其他部分隔离。命名空间是Linux内核的一个功能,它对内核资源(装载、网络设备等(进行分区,这样一组进程可以看到一组资源,而另一组进程则可以看到不同的资源。例如,每个容器都看到一个不同的根文件系统(容器映像(,并且其进程树与主机进程树的其余部分隔离。

除了通过名称空间进行隔离外,容器还受到cgroups可以使用多少资源的限制,这也是Linux内核的一个功能。

换句话说,容器并不是真正的"虚拟化">,因为它所使用的只是本机内核功能,并且使用容器(一旦启动(的开销非常小,所以一旦启动,它就会像其他进程一样运行。

Kubernetes是一个用于自动化容器化应用程序的部署、扩展和管理的系统,它需要一个托管容器的地方。此基础结构可以是裸机,也可以是虚拟机。

因此,在虚拟机内运行容器化应用程序带来的好处与在裸机上运行它们相同(隔离和资源消耗限制(。是通过裸机还是虚拟机向集群提供计算资源是另一个问题,每个问题都有其优缺点,但虚拟机与裸机的优缺点并不取决于您是在它们上运行容器还是常规应用程序和进程

你的观察,AKS;GKE和EKS使用VM为集群提供计算资源是正确的。它将物理硬件抽象掉,目前是公共云提供商提供计算资源的标准方式

这在社区中是一场非常流行的辩论,已经持续了很长一段时间。

我想说,它并没有真正违背目的本身,但选择一个比另一个有好处也有坏处。

如果我们客观地看待这一点,那么一些关键的决定因素是:

  • 性能
  • 操作便利性(无论目标托管是内部部署还是公共云,这都是有争议的(
  • 成本
  • 肯定会更

我整理了几个小表格来强调一些权衡,并希望邀请社区成员也加入其中。

裸金属

优点 缺点
由于可以避免Hypervisor许可成本,因此更具成本效益 另一方面,将错过通过虚拟化提供的高级功能
更好的性能和更优化的资源使用 操作不方便-例如,升级到裸机可能很长很难

相关内容

最新更新