KubeVirt 云原生虚拟化生产运维实战

KubeVirt 在 Kubernetes 上以自定义资源管理虚拟机,使容器和虚拟机能够共享声明式 API、调度、网络、存储和 GitOps 流程。它适合传统应用迁移、Windows 工作负载、需要完整内核的系统和容器化前的过渡场景,但并不意味着把现有虚拟机 YAML 化就自动获得高可用。生产环境需要同时理解 Kubernetes、QEMU/KVM、libvirt、CSI、CNI 和虚拟机操作系统。

一、核心组件与对象

  • KubeVirt Operator:安装与升级;
  • virt-api:提供 API、Webhook 和子资源;
  • virt-controller:协调 VirtualMachine 与 VirtualMachineInstance;
  • virt-handler:节点侧管理虚拟机;
  • virt-launcher:承载单个虚拟机进程的 Pod;
  • CDI:导入、上传、克隆虚拟磁盘;
  • virtctl:控制台、启停、迁移和镜像操作。

VirtualMachine 描述期望状态,VirtualMachineInstance 表示一次运行实例。虚拟机重启后 VMI 会变化,监控和资产系统不能只绑定临时 Pod 名称。

二、节点与硬件准备

节点必须支持硬件虚拟化并启用 KVM。上线前检查 BIOS/UEFI、CPU 虚拟化、IOMMU、内核模块、设备插件和嵌套虚拟化限制。

生产节点建议:

  • 独立节点池或明确污点与容忍;
  • 统一 CPU 特性或定义可迁移的 CPU Model;
  • 预留系统与迁移带宽;
  • 配置 HugePages、NUMA 和 CPU Pinning 时保持拓扑一致;
  • GPU、SR-IOV、PCI 直通节点使用标签与专用调度;
  • 避免宿主机超售失控。

不同代际 CPU 可能阻止热迁移。采购和扩容前就要建立 CPU 兼容基线。

三、虚拟机规格与资源治理

使用 InstanceType 和 Preference 统一 CPU、内存、设备和操作系统偏好,减少每台 VM 重复配置。资源请求应反映真实保底,Limit 与 Overcommit 策略要结合工作负载。

关键业务可使用 Dedicated CPU、CPU Manager、NUMA 和 HugePages,但会降低调度灵活性。内存 Balloon、热插拔和超售需经过应用验证,数据库等延迟敏感系统不应激进超售。

记录每台 VM 的:业务负责人、环境、操作系统、CPU/内存、磁盘、网络、备份策略、维护窗口、许可证和恢复级别。

四、镜像与 CDI

CDI 可从 HTTP、Registry、S3、PVC 或上传方式导入镜像。建立受控 Golden Image 流程:

  1. 固定镜像来源和校验值;
  2. 安装安全补丁和 VirtIO 驱动;
  3. 清理机器唯一标识;
  4. 配置 cloud-init/Sysprep;
  5. 扫描恶意软件和漏洞;
  6. 记录构建版本;
  7. 发布到只读镜像仓库;
  8. 定期淘汰旧镜像。

不要让生产虚拟机直接从互联网下载未知镜像。Windows 镜像要验证 VirtIO 存储、网络、QEMU Guest Agent 和激活方式。

五、存储设计

虚拟机系统盘和数据盘通常由 PVC 提供。存储类必须明确:

  • ReadWriteOnce/ReadWriteMany 能力;
  • Block 或 Filesystem 模式;
  • 快照、克隆、扩容;
  • 热迁移支持;
  • IOPS、吞吐、延迟;
  • 故障域和副本;
  • 在线恢复与备份工具兼容性。

热迁移要求源、目标节点都能访问虚拟磁盘,或使用支持的块迁移能力。只在单节点可见的 Local PV 会限制迁移和节点维护。

数据库 VM 应使用真实 IO 基准测试,并监控宿主、CSI、存储阵列和 Guest 四层延迟。

六、网络设计

默认 Pod 网络适合一般场景;Multus 可提供多个网络;Masquerade、Bridge、SR-IOV 和 Network Binding Plugin 适合不同需求。

设计前明确:

  • VM 是否需要固定 IP;
  • 二层邻接与 VLAN;
  • North-South 和 East-West 流量;
  • DHCP、DNS、网关与 MTU;
  • NetworkPolicy 是否生效;
  • 热迁移网络是否独立;
  • SR-IOV 是否允许迁移;
  • 服务发现使用 Service 还是外部负载均衡。

MTU 不一致常表现为小包正常、大包超时。排查时同时检查 CNI、物理网络、Guest 和隧道封装。

七、启动、更新与关机策略

RunStrategy 决定 VM 是否保持运行、手工控制或在故障后重启。操作系统关机需要 Guest Agent 或 ACPI 正常响应,强制终止可能损坏文件系统。

VM 更新分为可热更新与需重启更新。CPU、内存热插拔、磁盘和网络更新的支持取决于版本、Guest 和配置。变更平台应显示是否需要迁移、重启或重建,不能静默应用。

八、热迁移与迁移策略

热迁移把运行 VM 从一个节点移动到另一个节点,用于节点维护和负载平衡。生产需要配置 MigrationPolicy,控制并发、带宽、超时和完成策略。

迁移前检查:

  • CPU 兼容;
  • 存储共享或支持块迁移;
  • 直通设备限制;
  • 目标节点资源;
  • 网络与 MTU;
  • PDB 和迁移并发;
  • Guest 时钟与应用连接。

高内存脏页率的 VM 可能长期无法收敛。应降低写入、提高迁移带宽、使用合适策略或安排停机迁移。

九、节点维护

不要直接 Drain 承载 VM 的节点而不确认驱逐策略。使用 KubeVirt 节点维护和迁移能力,先评估不可迁移 VM,再执行:

停止新调度 → 迁移可迁移 VM → 处理直通/本地盘 VM
→ 验证业务 → 维护节点 → 恢复调度 → 验证 VM

为关键 VM 设置合适 PDB,但 PDB 不能创造额外容量。集群必须保留足够目标节点承接故障或维护。

十、快照、备份与恢复

VolumeSnapshot 只保护存储卷,不一定包含 VM 定义、Secret、网络和外部依赖。应用一致性需要 Guest Agent、文件系统冻结或数据库自身备份。

完整保护包括:

  1. VM、DataVolume、PVC、Secret 和网络对象;
  2. 磁盘快照或备份;
  3. Guest 内应用备份;
  4. Golden Image 和安装介质;
  5. KubeVirt/CDI 版本;
  6. 外部 DNS、IP 和负载均衡配置。

恢复演练要在隔离 Namespace 完成,避免恢复 VM 使用相同 IP、主机名或集群身份接入生产。

十一、安全治理

  • 限制谁能创建带特权设备、HostDevice、SR-IOV 或 HostPath 的 VM;
  • 使用 Namespace、RBAC 和准入策略;
  • 镜像签名、扫描和来源控制;
  • VNC/Serial Console 接入审计;
  • Secret 不写入 cloud-init 明文日志;
  • Guest OS 继续执行补丁、EDR、账号和防火墙管理;
  • 控制 USB、GPU 和 PCI 直通;
  • 对 Confidential Computing 能力单独验证。

Kubernetes RBAC 只控制平台 API,不替代 Guest 操作系统权限。

十二、监控与告警

平台层:Operator、virt-api、virt-controller、virt-handler、Webhook、队列、错误率和证书。

VM 层:状态、重启、CPU、内存、网络、磁盘、Guest Agent、迁移、快照和探针。

节点层:KVM、CPU 兼容、可分配资源、HugePages、直通设备、IO 和迁移带宽。

业务层:Guest 内服务可用性、数据库延迟、Windows 服务、补丁和备份结果。

仅看到 VMI Running 不能证明 Guest 业务正常,应配置 Readiness/Liveness 或外部监控。

十三、升级策略

升级 KubeVirt/CDI 前检查 Kubernetes 版本、API、Feature Gate、Operator 路径、虚拟机迁移和 Guest 兼容性。在预生产复制 Windows、Linux、直通设备、不同存储和网络 VM。

升级期间监控 Operator、组件滚动、Webhook、VMI、迁移和新建 VM。保留 CR、配置、镜像和 etcd 备份。Feature Gate 从实验变为 GA 或删除时要清理旧配置。

十四、故障排查

VM Pending

查看调度事件、资源请求、节点标签、CPU Model、HugePages、设备插件、PVC 和亲和规则。

VM 启动失败

检查 virt-launcher、libvirt、磁盘权限、镜像格式、cloud-init、UEFI/TPM 和 Guest 日志。

热迁移失败

核对 CPU、存储、网络、带宽、脏页率、目标资源和迁移策略。

磁盘性能差

分别查看 Guest、virt-launcher、CSI、节点和后端存储,确认 Cache/IO Mode、队列和卷模式。

Windows 蓝屏或无网卡

检查 VirtIO 驱动版本、磁盘控制器、网卡模型、Guest Agent 和镜像 Sysprep。

十五、生产检查清单

  • [ ] 节点 KVM、IOMMU 和 CPU 兼容性已验证;
  • [ ] VM 规格使用 InstanceType/Preference 治理;
  • [ ] Golden Image 有构建和淘汰流程;
  • [ ] 存储支持目标迁移、快照和恢复能力;
  • [ ] 网络、MTU、固定 IP 和 VLAN 有统一设计;
  • [ ] 关键 VM 已验证热迁移;
  • [ ] 节点维护有不可迁移 VM 预案;
  • [ ] 备份同时保护对象与磁盘;
  • [ ] 控制台、直通设备和镜像权限受控;
  • [ ] Guest OS 纳入补丁与安全管理;
  • [ ] 升级覆盖 Windows、Linux 和设备直通测试;
  • [ ] 已在隔离环境演练恢复。

参考资料

Copyright © yan-jian.com 2023 - 2026 · Powered by GitBook更新时间: 2026-11-04 16:12:49

results matching ""

    No results matching ""