在 KubeVirt 上克隆虚拟机
本文档提供了使用 KubeVirt 的 VirtualMachineClone API 克隆虚拟机(VM)的分步指导。
确保先决条件
在启动虚拟机克隆操作之前,请确保满足以下要求:
- 支持快照的存储:Clone API 依赖于快照与恢复功能。虚拟机所使用的存储类必须支持卷快照,并且该存储后端必须显式启用快照功能。
快速开始
按照以下快速步骤克隆虚拟机:
-
准备克隆清单:
创建一个名为
clone.yaml的文件,内容结构如下: -
执行克隆操作:
应用该清单:
-
监控克隆状态:
等待克隆成功完成:
-
验证克隆的虚拟机:
查看克隆虚拟机的配置:
-
修正 DataVolume 标签(UI 元数据):
平台 UI 通过标签
vm.cpaas.io/used-by=<vm-name>将虚拟机与其磁盘关联,该标签会自动添加到每个 DataVolume。 克隆操作后,新创建的 DataVolume 会继承源虚拟机的标签,因此 UI 仍然认为它属于旧虚拟机。 需要更新新创建的 DV 上的标签,使关系正确显示(功能不受影响)。
了解 VirtualMachineClone 对象
查看完整的 VirtualMachineClone 示例
以下是一个带有详细内联注释的完整 VirtualMachineClone 资源示例:
理解各字段含义
-
source 和 target:
- 定义原始虚拟机(
source)和克隆虚拟机(target)。 - 如果省略
target名称,则自动生成。 - 两个虚拟机必须位于同一命名空间内。
- 定义原始虚拟机(
-
标签和注解过滤器:
- 使用通配符(
*)和否定(!)控制是否复制源虚拟机的标签和注解。
- 使用通配符(
-
模板标签和注解过滤器:
- 主要用于管理网络相关注解,尤其是使用 Kube-OVN 等 CNI 时。
-
newMacAddresses:
- 可选,指定网络接口的新 MAC 地址。
- 如果省略,则自动重新生成。
-
newSMBiosSerial:
- 可选,指定新的 SMBios 序列号。
- 如果未提供,则基于虚拟机名称自动生成。
-
JSON 补丁:
- 用于对虚拟机规格进行高级自定义。
检查克隆操作阶段
VirtualMachineClone 对象的 .status.phase 会根据克隆进度变化。下表说明了各阶段含义: