KubeVirt:使用CRD扩展Kubernetes来运行虚拟化工作负载

作者:David Vossel(红帽)

来源:CNCF

KubeVirt是什么?

KubeVirt是一个Kubernetes插件,为用户提供了与容器工作负载并排安排传统虚拟机工作负载的能力。通过使用自定义资源定义(CRD)和其它Kubernetes功能,KubeVirt可以无缝扩展现有的Kubernetes集群,提供一组可用于管理虚拟机的虚拟化API。

为什么使用CRD而不是聚合API服务器?

早在2017年中期,我们在KubeVirt工作的人就处于十字路口。我们必须决定扩展Kubernetes是否使用聚合API服务器或使用新的自定义资源定义(CRD)功能。

当时,CRD缺乏我们提供功能集所需的大部分功能。创建我们自己的聚合API服务器的能力为我们提供了所需的所有灵活性,但它有一个主要缺陷。聚合API服务器显著地增加了安装和运行KubeVirt所涉及的复杂性。

问题的关键在于聚合API服务器需要访问etcd以获得对象持久性。这意味着集群管理员必须接受KubeVirt需要单独的etcd部署,这会增加复杂性,或者为KubeVirt提供对Kubernetes etcd的共享访问,这会引入风险。

我们并不接受这种权衡。我们的目标不仅仅是扩展Kubernetes来运行虚拟化工作负载,而是以最无缝和最轻松的方式实现。我们认为聚合API服务器所增加了复杂性,牺牲了KubeVirt涉及安装和运行的用户体验。

最终,我们选择CRD并相信Kubernetes生态系统将与我们共同发展以满足我们的用例需求。我们的赌注很好。现在对于满足需求,已经有解决方案或正在讨论的解决方案,解决了我们在2017年评估CRD与聚合API服务器时所遇到的每个功能差距。


K8S中文社区微信公众号

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址