通过替代方法使用 ONTAP 存储,利用 Red Hat OpenShift Virtualization 创建虚拟机
除了使用 OpenShift 虚拟化 UI 创建虚拟机的方法外,还有其他方法可以在 OpenShift 虚拟化上创建虚拟机。本节概述了其中一些方法。
使用红帽 OpenShift 虚拟化从 YAML 文件创建虚拟机
也可以通过使用 `oc apply`命令应用 YAML 文件来创建虚拟机。对于喜欢使用 CLI 或希望使用脚本自动创建虚拟机的用户,此方法非常有用。要使用此方法创建虚拟机,可以创建定义虚拟机及其关联资源(如虚拟机磁盘的 PVC)的 YAML 文件。然后,您可以使用 `oc apply -f <yaml-file>`命令应用 YAML 文件,在 OpenShift 集群上创建虚拟机。
显示示例
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: test-vms-vm
namespace: test-5vms
labels:
app: test-vms-vm
vm.kubevirt.io/template: centos-stream9-server-small
spec:
dataVolumeTemplates:
- apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: test-vms-vm-rootdisk
spec:
sourceRef:
kind: DataSource
name: centos-stream9
namespace: openshift-virtualization-os-images
storage:
resources:
requests:
storage: 30Gi
runStrategy: Always
template:
metadata:
labels:
kubevirt.io/domain: test-vms-vm
spec:
domain:
cpu:
cores: 1
sockets: 1
threads: 1
devices:
disks:
- bootOrder: 1
disk:
bus: virtio
name: rootdisk
- disk:
bus: virtio
name: cloudinitdisk
interfaces:
- masquerade: {}
model: virtio
name: default
resources:
requests:
memory: 2Gi
networks:
- name: default
pod: {}
terminationGracePeriodSeconds: 180
volumes:
- dataVolume:
name: test-vms-vm-rootdisk
name: rootdisk
- cloudInitNoCloud:
userData: |-
#cloud-config
user: admin
password: <replace with your password>
chpasswd: { expire: False }
name: cloudinitdisk
使用 Red Hat OpenShift Virtualization 从快照副本创建 VM
您可以使用 OpenShift Virtualization 从快照创建虚拟机。此过程包括创建 VolumeSnapshotClass、获取 VM 的持久卷声明 (PVC) 的快照、将快照还原到新的 PVC,以及部署使用还原的 PVC 作为根磁盘的新 VM。
借助Trident和 Red Hat OpenShift,用户可以对其所配置的存储类上的持久卷进行快照。利用此功能,用户可以获取卷的某个时间点的副本并使用它来创建新卷或将同一卷恢复到以前的状态。这启用或支持各种用例,从回滚到克隆到数据恢复。
对于 OpenShift 中的 Snapshot 操作,必须定义资源 VolumeSnapshotClass、VolumeSnapshot 和 VolumeSnapshotContent。
-
VolumeSnapshotContent 是从集群中的卷获取的实际快照。它是类似于用于存储的 PersistentVolume 的集群范围的资源。
-
VolumeSnapshot 是创建卷快照的请求。它类似于 PersistentVolumeClaim。
-
VolumeSnapshotClass 允许管理员为 VolumeSnapshot 指定不同的属性。它允许您对从同一卷获取的不同快照设置不同的属性。

显示示例
先决条件
您必须在 Trident 存储类上配置已附加 PVC 的现有虚拟机,并且该虚拟机必须处于运行状态,然后才能拍摄 PVC 的快照。您必须创建一个 VolumeSnapshotClass,以便用于创建 VolumeSnapshot。这将作为安装 OpenShift 虚拟化的先决条件的一部分创建。有关详细信息,请参阅 "第 3 步创建 VolumeSnapshotClass 配置"。
要创建虚拟机的快照,请完成以下步骤:
-
识别连接到源虚拟机的 PVC,然后创建该 PVC 的快照。导航至 `Storage > VolumeSnapshots`并单击创建卷快照。
-
选择要为其创建 Snapshot 的 PVC,输入 Snapshot 的名称或接受默认值,并选择适当的 VolumeSnapshotClass。然后单击“创建”。
-
这将创建该时间点的 PVC 快照。

从快照创建新虚拟机
-
首先,将快照恢复到新的 PVC 中。导航到存储 > VolumeSnapshots,单击要恢复的快照旁边的省略号,然后单击恢复为新 PVC。
-
输入新 PVC 的详细信息,然后单击“恢复”。这将创建一个新的 PVC。

-
接下来,从此 PVC 创建一个新的 VM。导航到“虚拟化”>“虚拟机”,然后单击“创建”>“使用 YAML”。
-
在 spec > template > spec >volumes 部分中,指定从快照而不是从容器磁盘创建的新 PVC。根据您的要求提供新虚拟机的所有其他详细信息。
- name: rootdisk
persistentVolumeClaim:
claimName: rhel8-short-frog-rootdisk-28dvb-snapshot-restore
-
单击“创建”以创建新的虚拟机。
-
虚拟机创建成功后,访问并验证新虚拟机与创建快照时使用 PVC 创建的虚拟机的状态是否相同。
使用 Trident 在 OpenShift Virtualization 中克隆虚拟机
此过程包括利用 Trident CSI 卷克隆,允许您通过关闭源虚拟机或保持其运行来创建新的虚拟机。
显示示例
虚拟机克隆
在 Trident 的 Volume CSI 克隆功能的支持下,可以克隆 OpenShift 中现有的 VM。 CSI 卷克隆允许通过复制 PV 来使用现有 PVC 作为数据源创建新的 PVC。新的 PVC 创建新之后,它将作为一个独立的实体运行,并且与源 PVC 没有任何链接或依赖关系。

对于 CSI 卷克隆,需要考虑以下某些限制:
-
源 PVC 和目标 PVC 必须在同一个项目中。
-
同一存储类内支持克隆。
-
仅当源卷和目标卷使用相同的 VolumeMode 设置时才可以执行克隆;例如,一个块卷只能克隆到另一个块卷。
OpenShift 集群中的虚拟机可以通过两种方式克隆:
-
通过关闭源虚拟机
-
通过保持源虚拟机处于活动状态
通过关闭源虚拟机
通过关闭 VM 来克隆现有 VM 是 OpenShift 的一项原生功能,是在Trident的支持下实现的。完成以下步骤来克隆虚拟机。
-
导航到工作负载>虚拟化>虚拟机,然后单击要克隆的虚拟机旁边的省略号。
-
单击克隆虚拟机并提供新虚拟机的详细信息。

-
单击克隆虚拟机;这将关闭源虚拟机并启动克隆虚拟机的创建。
-
此步骤完成后,您可以访问并验证克隆的VM的内容。
通过保持源虚拟机处于活动状态
还可以通过克隆源 VM 的现有 PVC,然后使用克隆的 PVC 创建新 VM 来克隆现有 VM。此方法不需要您关闭源虚拟机。完成以下步骤即可在不关闭虚拟机的情况下克隆虚拟机。
-
导航到存储 > 持久卷声明,然后单击连接到源虚拟机的 PVC 旁边的省略号。
-
单击克隆 PVC 并提供新 PVC 的详细信息。

-
然后单击克隆。这会为新的 VM 创建 PVC。
-
导航到“工作负载”>“虚拟化”>“虚拟机”,然后单击“创建”>“使用 YAML”。
-
在 spec > template > spec >volumes 部分中,附加克隆的 PVC 而不是容器磁盘。根据您的要求提供新虚拟机的所有其他详细信息。
- name: rootdisk
persistentVolumeClaim:
claimName: rhel8-short-frog-rootdisk-28dvb-clone
-
单击“创建”以创建新的虚拟机。
-
VM创建成功后,访问并验证新VM是否为源VM的克隆。