Metal3 对接 KubeVirtBMC:让 KubeVirt 虚拟机像物理服务器一样被供给
CNCF 博客连载教程演示了用 Metal3 通过 KubeVirtBMC 供给 KubeVirt 虚拟机的完整链路:Metal3 声明 BareMetalHost,Ironic 发出 Redfish 指令,由虚拟 BMC 转译成 Kubernetes API 调用。文章附完整复现步骤与环境要求。
作者:核流编辑 · 栏目:资源
在 Kubernetes 里管物理服务器和管虚拟机,长期以来是两套玩法。CNCF 博客 9 月 2 日发布的教程把两条链路接到了一起:用 Metal3 管理 KubeVirt 虚拟机,像管理物理服务器一样完成装机与开关机。教程由 Kubestronaut Anish Bista 与 KubeVirtBMC 作者 Zespre Chang 撰写,附完整可复现的演示环境。 组合的关键:把虚拟 BMC 接进 Metal3 的世界 Metal3(Metal Kubed)是一个 CNCF 孵化项目,把裸金属主机管理带进 Kubernetes 生态,底层依赖 OpenStack Ironic 完成硬件盘点、启动设备设置和镜像写入。它的核心抽象是 BareMetalHost 自定义资源:你声明 BMC 地址、凭据和想要的镜像,其余交给 Metal3。 组件职责 Metal3声明式管理 BareMetalHost,调度供给流程 OpenStack Ironic执行硬件检查、设置启动设备、写盘 KubeVirtBMC为 KubeVirt 虚拟机提供虚拟 BMC 端点,转译 Redfish/IPMI 指令 问题在于,物理服务器自带 BMC,虚拟机没有。KubeVirtBMC 补上了这块:它为每台 KubeVirt 虚拟机提供虚拟 BMC 端点,把 Ironic 发来的 Redfish 请求转译成 Kubernetes API 调用去控制虚拟机。Metal3 全程感知不到对面是虚拟机——供给体验与物理机完全一致。 环境要求与获取方式 按教程要求,复现这套环境需要: 一个支持虚拟化的 Kubernetes 集群(嵌套虚拟化或裸金属) 已安装并正常运行的 KubeVirt 用于虚拟机磁盘的存储方案 本地安装 kubectl、helm、kustomize 项目入口与文档可以在 Metal3 官网获取,源代码托管在 metal3-io 组织的 GitHub 仓库,KubeVirtBMC 的用法则在 CNCF 博客的前一篇与本篇连载中说明。整套演示适合已经在用 KubeVirt 做虚拟化平台、又想统一纳管物理机与虚拟机的基础设施团队试用。 这套组合适合已经在维护 KubeVirt 虚拟化平台的平台工程师:实际价值在于把裸金属供给的成熟语义搬进了全虚拟化环境:同一套声明式接口同时覆盖物理机与虚拟机,机房里的「金属」和集群里的「虚机」从此用同一种语言对话。教程中的每一个步骤都可以在本地复现,动手门槛主要在 KubeVirt 与存储侧。 参考资料 CNCF Blog:Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like bare metal Metal3:Bare metal host management for Kubernetes(项目官网) metal3-io:metal3 源代码仓库