Kubernetes 的未来:虚拟机?容器?还是 Hypervisor?

阅读数:5814 2019 年 5 月 29 日 08:00

Kubernetes的未来:虚拟机?容器?还是Hypervisor?

Kubernetes 未来将走向何方?Pivotal 的首席技术专家 Paul Czarkowski 预测虚拟机(VM)将取代容器;红帽的副总裁 Joe Fernandes 认为虚拟机只是在帮助Kubernetes 进化,而不会取代容器。此外,红帽的高级产品营销经理 Chris Short 表示, Kubernetes 很快就会取代虚拟机管理器(Hypervisor)

Czarkowski 表示,虽然容器改进了软件的构建和部署方式,它们也不像虚拟机那样是安全的隔离沙箱。此外,容器是基于共享内核模型构建的,仅提供基本的进程隔离。Kubernetes 中的大多数组件都不是租户感知(tenant aware)的,所以采用的是软租户模型,其中只有命名空间 pod 安全策略级别是隔离的,但 API 却是共享组件:

这种情况导致了“多集群”模式的兴起,取代了“单个共享的大集群”。经常能见到谷歌 GKE 服务的客户为多支团队部署好几十个 Kubernetes 集群。通常每位开发者都有自己的集群。这种习惯导致集群数量快速增长到令人震惊的程度,足以称作“Kuber 泛滥”了。

为了解决 Kuber 泛滥问题,Czarkowski 提议使用像 Kata Containers 这样的微型虚拟机——它是一个“开源项目和社区,致力于构建轻量级虚拟机的标准实现,其形态和工作方式和容器很像,但提供了虚拟机具备的负载隔离和安全性优势“。他的提议不是使用许多 Kubernetes 控制面板,而是使用 Kata Containers 为每个租户提供一个隔离的环境(包括 Kubernetes API),其中嵌套的 VM 容器在来自 AWS、Azure、GCP 或 vSphere 的虚拟机中运行。这种部署如下图所示:

Kubernetes的未来:虚拟机?容器?还是Hypervisor?

资料来源:Paul Czarkowski 撰写的“ Kubernetes 的未来就是虚拟机

在上图中已经部署了两个 Kubernetes 命名空间,分别是foobar。每个命名空间都有自己的 API、系统服务和 pod。这样通过嵌套的虚拟机来支持多租户集群就能减少 Kuber 泛滥现象,并且这种底层基础架构可用于在同一虚拟机中托管非容器工作负载。

另外,Short 说“使用 Kubernetes 作为虚拟机管理器的想法很快就会变为现实了”,使用像 KubeVirt 和 Kata Containers 等工具帮助组织迁移无法容器化的老旧负载。KubeVirt 是虚拟机管理的附加组件,可在 Kubernetes 之上提供虚拟化解决方案。KubeVirt 允许无法轻易容器化的老旧应用使用 Kubernetes 的内置功能,如自我修复、自动滚动升级(和回滚)、水平扩容等。Short 说:

这意味着虚拟机只要少量调整就能容器化了。根据现有的一些计划,Kubernetes 将作为虚拟机管理器开始改变数据中心和云计算环境。

也就是说 Czarkowski 和 Short 的想法是互补的。Czarkowski 认为 Kubernetes 未来将成为融合新兴技术的虚拟机,就像来自 AWS 的 Firecracker 和来自 Google 的 gVisor 那样;而 Short 认为虚拟机的未来就是 Kubernetes,组织会使用像 KubeVirt 这样的工具将原有的应用迁移到 Kubernetes 上。

Fernandes 表示,未来的关键不是容器将取代虚拟机,而是如何使用 Kubernetes 来协调不同的负载,如传统的基于虚拟机的负载或是微型虚拟机等。Kubernetes 将帮助组织现代化其负载,并为容器、虚拟机甚至裸机基础架构提供混合操作。还会有组织继续在裸机基础架构中运行负载,以通过硬件加速技术满足性能需求。或者也有公司像 Short 所说的那样,希望通过虚拟机、微型虚拟机或借助 KubeVirt 和 Kata Containers 等工具来迁移并进化现有的负载。

所以 Fernandes 认为虚拟机不会取代容器。相反,Kubernetes 堆栈中虚拟机会不断进化。2019 年的趋势是 Kubernetes 与虚拟化开始相交,此外还兴起了更开放的新思维模式:Kubernetes 将开始使用容器和虚拟机来运行混合负载。

Fernandes 在帖子最后补充了 Short 和 Czarkowski 的观点,他说 Kubernetes 的三大关键趋势将是:

  1. Kubernetes 编排微虚拟机,为不受信任的负载提供更严格的多租户隔离。

  2. Kubernetes 编排和管理传统的基于虚拟机的负载(通过 KubeVirt)以及基于容器的负载。

  3. Kubernetes 集群越来越多地部署在裸机服务器上,作为基于虚拟机环境的 Kubernetes 的替代品。

你如何看待 Kubernetes 的未来?

查看英文原文 Kubernetes Future: VMs, Containers, or Hypervisor?

评论

发布