KubeVirt和其他技术的对比

  1. Kubevirt vs OpenStack or oVirt
  2. KubeVirt vs ClearContainers
  3. KubeVirt vs virtlet
  4. 为何基于Kubernetes构建vm的运行环境,而不采用将容器带入OpenStack or oVirt

Kubevirt vs OpenStack or oVirt

Kubevirt的主要目标是允许基于Kubernetes运行虚拟机。它专注于虚拟化。一般的虚拟化管理系统(例如OpenStack或Ovirt)通常包括一些其他服务,这些服务要照顾网络管理,主机提供,数据仓库,仅举几例。这些服务超出了Kubevirt的范围。话虽如此,Kubevirt旨在成为虚拟化管理系统的一部分。Kubevirt可以看作是VM群集运行时,并且Kubernetes的组件提供了其他功能,以提供一个不错的连贯的用户体验。

虽然是完全不一样的技术路线,实现方案,但是有个强关联的地方,就是 Kubevirt 是用来代替 Openstack 和 oVirt 的。

KubeVirt vs ClearContainers

ClearContainers 是关于使用 VM 情形, 在容器运行时级别 不同于 pod 或容器。另一方面,KubeVirt 是关于允许在集群级别管理虚拟机。

除此之外,暴露虚拟机的方式也不同。 ClearContainers 隐藏了使用虚拟机的事实,但 KubeVirt 对外提供一整套完整的 API 来配置虚拟机。

ClearContainers 和 Kata Containers 是同一维度的东西。

KubeVirt vs virtlet

这两个东西是采用的技术路线有一定的共通的地方,有较强的可比性。

virtlet 是一个 CRI 实现,用于运行虚拟机而不是容器。与 KubeVirt 的主要区别在于:

  1. virtlet 是一个 CRI。这意味着 VM 运行时位于主机上,并且 kubelet 要特别适配 virtlet。而 KubeVirt 可以部署为原生 Kubernetes 插件。
  2. Pod API。 virtlet 使用 Pod API 来指定 VM。某些字段(例如卷)映射到相应的 VM 功能。这是有问题的,VM 有很多细节无法映射到 Pod 对应对象。最终只能使用注解annotations来表示这些属性。而 KubeVirt 使用了 VM 的专用的一整套 API,并试图覆盖 VM 的所有属性。

因为上述种种原因Kubevirt终结了virtlet,ClearContainers倒不是被Kubevirt终结的,而是被Kata Containers取而代之了。就差Openstack还残喘着,但被完全取代或部分使用场景被取代是大势所趋。

为何基于Kubernetes构建vm的运行环境,而不采用将容器带入OpenStack or oVirt

容器工作负载是未来。因此,要在容器管理系统之上添加 VM 支持,而不是将容器支持构建到 VM 管理系统中。


转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至 backendcloud@gmail.com