作者:KubeVirt 维护者
KubeVirt 社区很自豪地宣布发布KubeVirt v1.0[1]!这个版本展示了社区和用户在过去几年中所取得的成就,并代表了每个人都参与其中的重要里程碑。
简要历史
KubeVirt 项目始于 2016 年底的红帽,当时的问题是:虚拟机(VM)能否在容器中运行,并由 Kubernetes 部署?
它不仅被证明是可能的,而且很快成为了容器时代虚拟机未来的一种有前途的解决方案。
KubeVirt 于 2019 年 9 月加入 CNCF 作为沙箱项目,并于 2022 年 4 月成为孵化项目。
从最初的几个人对概念进行 hack,KubeVirt 已经发展成为拥有 45 个活跃代码库的项目,其中主要的kubevirt/kubevirt[2]代码库拥有 17k 次提交和 1k 个分支。
背景:什么是 KubeVirt?
对于那些不熟悉该项目的人来说,KubeVirt 扩展了 Kubernetes API 并添加了 CRD,以使 VM 能够在 Kubernetes 内原生运行。通过将 QEMU 和 libvirt 的可信虚拟化层容器化,KubeVirt 能够像任何其他 Kubernetes 资源一样处理 VM。这使得用户能够在其容器工作负载旁边运行其虚拟工作负载,不仅以相同的方式管理它们,而且还能够使用云原生用户已经熟悉和喜爱的相同工具,例如 Tekton、Istio、ArgoCD 等等。随着项目的发展,KubeVirt 已经成为一个作为原生 Kubernetes API 运行的生产就绪的虚拟机监控程序。
v1.0 对社区意味着什么?
v1.0 版本标志着社区在过去六年,从想法到生产就绪的虚拟机管理解决方案中所经历的令人难以置信的增长。v1.0 的下一个阶段是在继续发展项目的同时,额外关注维护 API。这促使 KubeVirt 在项目的关键部分采用了 Kubernetes 社区的社区实践。
在发布之前,我们进行了发布节奏的变化:从每月发布一次变为每年发布 3 次,遵循 Kubernetes 的发布模型。这使我们的开发者社区有更多时间确保稳定性和兼容性,使我们的用户有更多时间计划和升级,同时还将我们的发布与 Kubernetes 保持一致,以简化维护和支持。
“与 Kubernetes 保持一致”的主题也体现在社区的其他部分中,通过遵循其治理流程;引入 SIG 来分拆测试和评审职责,以及一个 SIG 发布库来处理与发布相关的所有内容;以及定期SIG 会议[3],现在包括 SIG scale 和 performance 和 SIG storage 以及我们每周的社区会议。
这个版本中包含什么?
该版本展示了社区和用户在过去几个月中所取得的成就和用户采用情况。功能和错误修复的完整列表可以在我们的发布说明[4]中找到,但我们还向一些 SIG 的代表要求了摘要。
SIG-scale
KubeVirt 的 SIG-scale 推动社区中的性能和可伸缩性倡议。我们在 v1.0 发布中的重点是共享过去 6 个月内的性能结果。自 2022 年 12 月以来的基准测试,涵盖了过去两个版本——v0.59(2023 年 3 月)和 v1.0(2023 年 7 月)——的结果如下:
- v1.0 发布的性能基准测试结果[5]
- v1.0 发布的可扩展性基准测试结果[6]
发布这些测量结果为社区和最终用户提供了多个版本的性能和可伸缩性可见性。此外,这些结果有助于确定代码更改的影响,以便社区成员可以诊断性能问题和回归。
最终用户可以使用与 SIG-scale 相同的工具和技术来分析其自己的部署中的性能和可伸缩性。由于性能和可伸缩性大多相对于部署栈,因此应该使用相同的策略来进一步定位社区的测量结果。
SIG-storage
SIG-storage 专注于为 KubeVirt VM 提供持久存储,并在 VM 的整个生命周期中管理该存储。这始于使用可引导镜像配置和填充 PVC,但还包括功能,例如热插拔磁盘、快照、备份和恢复、灾难恢复和虚拟机导出。
在 v1.0,SIG-storage 提供了以下功能:提供灵活的 VM 导出 API,启用持久 SCSI 保留,从保留的快照中创建 VM,并为其他存储提供程序设置开箱即用的默认值。另一个主要工作是实现 Volume Populator 替代 KubeVirt DataVolume API,以更好地利用平台功能。该 SIG 每 2 周举行一次会议,欢迎任何人加入我们进行有趣的存储讨论。
SIG-compute
SIG-compute 专注于 KubeVirt 的核心虚拟化功能,但也包括其他 SIG 难以适应的功能。SIG-compute 的范围包括 VM 的生命周期、迁移以及核心 API 的维护。
在 v1.0,SIG-compute 为内存超额提交开发了功能。这包括对 KSM 和 FreePageReporting 的初始支持。我们增加了对持久 vTPM 的支持,这使得在 Windows 安装中使用 BitLocker 变得更加容易。此外,现在有一个 CPU 热插拔的初始实现(当前隐藏在一个功能门后)。
SIG-network
SIG-network 致力于增强和维护 KubeVirt 中虚拟机网络连接和管理的所有方面。
在 v1.0 版本,我们引入了 HotPlug 和 HotUnplug(作为 Alpha 版),这使用户能够在运行的 VM 上添加和删除使用桥接绑定的 VM 辅助网络接口。HotPlug API 稳定化和对 SR-IOV 接口的支持正在开发中,将在下一个小版本中发布。
SIG-infra
简化 VirtualMachine UX 的工作仍在继续,在 v1.0 版本中,我们成功引入了 instancetype.kubevirt.io API 的 v1beta1 版本。在未来的 KubeVirt v1.1.0 版本中,我们的目标是将 instancetype.kubevirt.io API 升级为 v1。
通过新版本,现在可以在实例类型中按百分比控制虚拟机的内存超额提交。已将资源需求添加到首选项中,这使用户可以确保满足工作负载的要求。此外,还添加了几个新的首选项属性,以涵盖更多用例。
此外,virtctl 被扩展以利用新的实例类型和首选项功能。
KubeVirt 的下一步是什么?
从开发的角度来看,我们将继续引入和改进功能,以使虚拟化用户的生活更轻松,并尽可能 Kubernetes 原生化。从社区的角度来看,我们正在改进我们的新贡献者体验,以便我们可以继续增长并帮助新成员学习并成为云原生生态系统的一部分。此外,通过这个里程碑,我们现在可以将注意力转向成为 CNCF 毕业项目。
参考资料
[1]
KubeVirt v1.0: https://github.com/kubevirt/kubevirt/releases/tag/v1.0.0
[2]
kubevirt/kubevirt: https://github.com/kubevirt/kubevirt
[3]
SIG 会议: https://calendar.google.com/calendar/u/0/embed?src=kubevirt@cncf.io
[4]
发布说明: https://github.com/kubevirt/kubevirt/releases/tag/v1.0.0
[5]
v1.0 发布的性能基准测试结果: https://github.com/kubevirt/kubevirt/blob/release-1.0/docs/release-v1-perf-scale-benchmarks.md#performance-benchmarks-for-v1-release
[6]
v1.0 发布的可扩展性基准测试结果: https://github.com/kubevirt/kubevirt/blob/release-1.0/docs/release-v1-perf-scale-benchmarks.md#scalability-benchmarks-for-v1-release
点击【阅读原文】阅读网站原文
本文转载自CNCF