2.20. 使用 DataVolumeTemplate 克隆虚拟机
您可通过克隆现有虚拟机的 PersistentVolumeClaim (PVC) 来创建新虚拟机。在虚拟机配置文件中包括 dataVolumeTemplate
,即可从原始 PVC 创建新 DataVolume。
先决条件
- 您可能需要定义一个 StorageClass 或准备 CDI 涂销空间才能成功完成此操作。CDI 支持的操作列表显示需要涂销空间的状况。
2.20.1. 关于 DataVolume
DataVolume
对象是 Containerized Data Importer (CDI) 项目提供的自定义资源。DataVolume 编配与底层 PersistentVolumeClaim (PVC) 关联的导入、克隆和上传操作。DataVolume 与 KubeVirt 集成,它们可在 PVC 准备好前阻止虚拟机启动。
2.20.2. 使用 DataVolumeTemplate 从克隆的 PersistentVolumeClaim 创建新虚拟机
您可创建一个虚拟机,它将现有虚拟机的 PersistentVolumeClaim (PVC) 克隆到 DataVolume 中。通过在虚拟机 spec
中引用 dataVolumeTemplate
,源
PVC 便会克隆到 DataVolume 中,然后自动用于创建虚拟机。
当 DataVolume 作为虚拟机 DataVolumeTemplate 的一部分创建时,DataVolume 的生命周期依赖于虚拟机。如果删除了虚拟机,DataVolume 及其相关 PVC 也会一并删除。
先决条件
- 确定要使用的现有虚拟机磁盘的 PVC。克隆之前,必须关闭与 PVC 关联的虚拟机。
-
安装 OpenShift 命令行界面 (CLI),通常称为
oc
。
流程
- 检查您要克隆的虚拟机,以识别关联 PVC 的名称和命名空间。
为
VirtualMachine
对象创建 YAML 文件。以下虚拟机示例克隆my-favorite-vm-disk
,该磁盘位于source-name
命名空间中。名为favorite-clone
的2Gi
DataVolume 从my-favorite-vm-disk
创建而成。例如:
apiVersion: kubevirt.io/v1alpha3 kind: VirtualMachine metadata: labels: kubevirt.io/vm: vm-dv-clone name: vm-dv-clone 1 spec: running: false template: metadata: labels: kubevirt.io/vm: vm-dv-clone spec: domain: devices: disks: - disk: bus: virtio name: root-disk resources: requests: memory: 64M volumes: - dataVolume: name: favorite-clone name: root-disk dataVolumeTemplates: - metadata: name: favorite-clone spec: pvc: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi source: pvc: namespace: "source-namespace" name: "my-favorite-vm-disk"
- 1
- 要创建的虚拟机。
使用 PVC 克隆的 DataVolume 创建虚拟机:
$ oc create -f <vm-clone-datavolumetemplate>.yaml
2.20.3. 模板:DataVolume 虚拟机配置文件
example-dv-vm.yaml
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
labels:
kubevirt.io/vm: example-vm
name: example-vm
spec:
dataVolumeTemplates:
- metadata:
name: example-dv
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1G
source:
http:
url: "" 1
running: false
template:
metadata:
labels:
kubevirt.io/vm: example-vm
spec:
domain:
cpu:
cores: 1
devices:
disks:
- disk:
bus: virtio
name: example-dv-disk
machine:
type: q35
resources:
requests:
memory: 1G
terminationGracePeriodSeconds: 0
volumes:
- dataVolume:
name: example-dv
name: example-dv-disk
- 1
- 您要导入的镜像的
HTTP
源(如适用)。
2.20.4. CDI 支持的操作列表
此列表针对端点显示内容类型支持的 CDI 操作,以及哪些操作需要涂销空间(scratch space)。
内容类型 | HTTP | HTTPS | HTTP 基本身份验证 | Registry | 上传 |
---|---|---|---|---|---|
KubeVirt(QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
Archive+ | ✓ TAR | ✓ TAR | ✓ TAR | □ TAR | □ TAR |
✓ 支持的操作
□ 不支持的操作
* 需要涂销空间
** 如果需要自定义证书颁发机构,则需要涂销空间
+ 存档不支持块模式 DV