KubeVirt的下一个十年

KubeVirt的下一个十年

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

KubeVirt正从在Kubernetes上运行虚拟机,发展为更广泛的虚拟化生态。未来重点包括:用DRA统一分配GPU、网卡和CPU;支持机密虚拟机与远程证明;通过插件机制扩展核心功能;让虚拟化栈可插拔,以支持Cloud Hypervisor、Firecracker等替代方案。项目坚持Kubernetes原生和核心稳定原则,并推动成为CNCF毕业项目。

🔎

延伸解读

DRA 统一分配:从 GPU 到 CPU 的协调调度

KubeVirt 正将 Kubernetes 的 Dynamic Resource Allocation(DRA)从 GPU 扩展到网卡、通用主机设备和 CPU。v1.9 中 GPU 的 DRA 支持已进入 beta,未来虚拟机可一次性申请 GPU、NIC 和 CPU,由 Kubernetes 作为协调集合分配。这延续了项目优先采用 Kubernetes 原生机制的原则,而非自建虚拟化专用方案,有望提升设备分配的粒度与一致性。

机密虚拟机:硬件信任与远程证明的落地节奏

KubeVirt 在机密计算上进展不一:v1.9 中 AMD SEV/SEV-SNP 功能门控进入 beta,Intel TDX 仍为 alpha,IBM Secure Execution 已达 GA,Arm CCA 仍在开发。项目正探索与 Trustee 等证明和密钥释放服务集成,并研究跨节点的 TEE 能力发现,以帮助调度器将机密虚拟机放到合适硬件上。对 AI 等敏感负载,信任边界需覆盖 CPU、加速器及互连,相关能力仍处不同阶段。

插件机制:核心稳定与生态扩展的平衡

KubeVirt 核心保持稳定,新功能需长期支持且不破坏现有集群才会进入主仓库。为不阻碍创新,v1.9 引入 alpha 的结构化插件,以集群级对象提供域钩子、节点钩子和准入控制,管理员可见可控。这借鉴 Kubernetes 扩展思路,让完整功能可在核心外实现并仍获得 KubeVirt API 保障,避免核心因功能膨胀而失稳。

可插拔虚拟化栈:超越 libvirt/QEMU/KVM 的长期布局

libvirt、QEMU 和 KVM 仍是 KubeVirt 默认且合理的虚拟化栈。v1.8 已加入树内 Hypervisor 抽象层和微软 MSHV 后端(Alpha),目标是让 Cloud Hypervisor、OpenVMM、Firecracker 等无需分叉 KubeVirt 即可在树外运行。VEP #82 概述了主要工作,需重构以插件框架选择 VMM 和 hypervisor。此举可增加用户灵活性并可能扩大采用,但仍在进行中。

❓

Q&A

KubeVirt 最初是为什么创建的?

KubeVirt 由 Red Hat 于 2016 年创立,初衷是让 Kubernetes 能在运行容器的同时运行虚拟机,从而允许用户将遗留工作负载与现代化应用运行在同一平台上。

KubeVirt 未来如何统一分配 GPU、网卡和 CPU 等设备?

KubeVirt 正通过 Kubernetes 动态资源分配(DRA)来统一分配 GPU、网卡和 CPU。GPU 的 DRA 支持在 v1.9 已进入 Beta,该模型正扩展到通用主机设备、SR-IOV 网络设备和 CPU,未来虚拟机可以请求一组协调分配的资源,并支持根据虚拟机规格和供应商策略自动生成 ResourceClaim。

KubeVirt 在机密虚拟机方面支持哪些硬件技术?

KubeVirt 的机密计算工作覆盖 Intel TDX、AMD SEV(包括 SEV-SNP)、IBM Secure Execution 以及新兴的 Arm CCA。在 v1.9 中,AMD SEV/SEV-SNP 功能门控进入 Beta,Intel TDX 仍为 Alpha,IBM Secure Execution 已达到 GA,Arm CCA 支持仍在开发中。

远程证明在 KubeVirt 机密虚拟机中起什么作用?

远程证明让工作负载所有者能够在向环境授予机密之前评估该环境的证据。KubeVirt 正在探索与证明和秘密释放服务(如 Confidential Containers 项目的 Trustee)集成,帮助用户决定是否信任运行环境。

KubeVirt 的插件机制是什么?

KubeVirt 的插件是集群作用域对象,包括域钩子、节点钩子和准入控制。域变更可以用 CEL 表达式或 sidecar 实现,管理员可以查看和控制插件。该机制在 v1.9 中为 Alpha,允许用户在核心之外构建完整功能,同时仍获得 KubeVirt API 保证。

KubeVirt 如何让虚拟化栈可插拔?

KubeVirt 在 v1.8 引入了树内 Hypervisor 抽象层和 Microsoft 的 MSHV 后端(Alpha),目标是让虚拟化栈可插拔,使 Cloud Hypervisor、OpenVMM 或 Firecracker 等替代方案能在树外运行而无需分叉 KubeVirt。这需要重新架构 KubeVirt,使用插件框架选择特定的虚拟机监视器和 hypervisor,相关工作已开始,VEP #82 概述了主要工作。

🏷️

标签

➡️

继续阅读