$ virtctl stop <my_vm_name>
您可以通过从本地计算机上传操作系统镜像来创建虚拟机 (VM)。
您可以通过将 Windows 镜像上传到 PVC 来创建 Windows 虚拟机。然后在创建虚拟机时克隆 PVC。
您必须在从 Red Hat 未提供的操作系统镜像创建的虚拟机上安装 QEMU 访客代理。 您还必须在 Windows 虚拟机上安装 VirtIO 驱动程序。 |
您可以使用 OpenShift Container Platform Web 控制台从上传的操作系统镜像创建虚拟机 (VM)。
您必须拥有 IMG
、ISO
或 QCOW2
镜像文件。
在 Web 控制台中导航到**虚拟化** → **目录**。
单击没有可用启动源的模板图块。
单击**自定义虚拟机**。
在**自定义模板参数**页面上,展开**存储**并从**磁盘源**列表中选择**上传(将新文件上传到 PVC)**。
浏览到您本地计算机上的镜像并设置磁盘大小。
单击**自定义虚拟机**。
单击**创建虚拟机**。
在使用镜像创建黄金镜像(虚拟机 (VM) 的预配置快照)之前,您可以泛化 Red Hat Enterprise Linux (RHEL) 镜像以删除所有特定于系统的配置数据。您可以使用黄金镜像来部署新的虚拟机。
您可以使用 virtctl
、guestfs
和 virt-sysprep
工具泛化 RHEL 虚拟机。
您有一个用作基础虚拟机的 RHEL 虚拟机 (VM)。
您已安装 OpenShift CLI(oc
)。
您已安装virtctl
工具。
如果 RHEL 虚拟机正在运行,请使用以下命令将其停止
$ virtctl stop <my_vm_name>
可选:克隆虚拟机以避免丢失原始虚拟机中的数据。然后,您可以泛化克隆的虚拟机。
运行以下命令检索存储虚拟机根文件系统的dataVolume
$ oc get vm <my_vm_name> -o jsonpath="{.spec.template.spec.volumes}{'\n'}"
[{"dataVolume":{"name":"<my_vm_volume>"},"name":"rootdisk"},{"cloudInitNoCloud":{...}]
运行以下命令检索与列出的dataVolume
匹配的持久卷声明 (PVC)
$ oc get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
<my_vm_volume> Bound …
如果您的集群配置不允许您克隆虚拟机,为了避免丢失原始虚拟机中的数据,您可以将虚拟机 PVC 克隆到数据卷。然后,您可以使用克隆的 PVC 创建金版镜像。 如果您通过克隆 PVC 来创建金版镜像,请使用克隆的 PVC 继续执行后续步骤。 |
使用libguestfs-tools
部署一个新的交互式容器,并将 PVC 附加到它,运行以下命令
$ virtctl guestfs <my-vm-volume> --uid 107
此命令将打开一个 shell,供您运行下一个命令。
运行以下命令删除系统特定配置
$ virt-sysprep -a disk.img
在 OpenShift Container Platform 控制台中,单击**虚拟化** → **目录**。
单击**添加卷**。
在**添加卷**窗口中
从**源类型**列表中,选择**使用现有卷**。
从**卷项目**列表中,选择您的项目。
从**卷名称**列表中,选择正确的 PVC。
在**卷名称**字段中,输入新金版镜像的名称。
从**首选项**列表中,选择您正在使用的 RHEL 版本。
从**默认实例类型**列表中,选择具有之前选择的 RHEL 版本所需的正确 CPU 和内存要求的实例类型。
单击**保存**。
新卷将显示在**选择要从中引导的卷**列表中。这是您的新金版镜像。您可以使用此卷创建新的虚拟机。
您可以通过将 Windows 镜像上传到持久卷声明 (PVC),然后在使用 OpenShift Container Platform Web 控制台创建虚拟机时克隆 PVC 来创建 Windows 虚拟机 (VM)。
您已使用 Windows Media Creation Tool 创建了 Windows 安装 DVD 或 USB。请参阅 Microsoft 文档中的创建 Windows 10 安装介质。
您已创建autounattend.xml
应答文件。请参阅 Microsoft 文档中的应答文件 (unattend.xml)。
将 Windows 镜像上传为新的 PVC
在 Web 控制台中导航到**存储** → **PersistentVolumeClaims**。
单击**创建 PersistentVolumeClaim** → **使用数据上传表单**。
浏览到 Windows 镜像并选择它。
输入 PVC 名称,选择存储类和大小,然后单击**上传**。
Windows 镜像已上传到 PVC。
通过克隆上传的 PVC 配置新的虚拟机
导航到**虚拟化** → **目录**。
选择 Windows 模板磁贴,然后单击**自定义虚拟机**。
从**磁盘源**列表中选择**克隆(克隆 PVC)**。
选择 PVC 项目、Windows 镜像 PVC 和磁盘大小。
将应答文件应用于虚拟机
单击**自定义虚拟机参数**。
在**脚本**选项卡的**Sysprep**部分,单击**编辑**。
浏览到autounattend.xml
应答文件,然后单击**保存**。
设置虚拟机的运行策略
清除**创建后启动此虚拟机**,以便虚拟机不会立即启动。
单击**创建虚拟机**。
在**YAML**选项卡上,将running:false
替换为runStrategy: RerunOnFailure
,然后单击**保存**。
单击选项菜单 并选择**启动**。
虚拟机将从包含autounattend.xml
应答文件的sysprep
磁盘启动。
您可以泛化 Windows 操作系统镜像,以删除所有系统特定配置数据,然后才能使用该镜像创建新的虚拟机 (VM)。
在泛化虚拟机之前,您必须确保sysprep
工具无法在无人参与的 Windows 安装后检测到应答文件。
安装了 QEMU 来宾代理的正在运行的 Windows 虚拟机。
在 OpenShift Container Platform 控制台中,单击**虚拟化** → **虚拟机**。
选择 Windows 虚拟机以打开**虚拟机详细信息**页面。
单击**配置** → **磁盘**。
单击sysprep
磁盘旁边的选项菜单 并选择**分离**。
单击**分离**。
重命名C:\Windows\Panther\unattend.xml
以避免被sysprep
工具检测到。
通过运行以下命令启动sysprep
程序
%WINDIR%\System32\Sysprep\sysprep.exe /generalize /shutdown /oobe /mode:vm
sysprep
工具完成后,Windows 虚拟机将关闭。虚拟机的磁盘映像现在可作为 Windows 虚拟机的安装映像使用。
您现在可以专门化虚拟机。
专门化 Windows 虚拟机 (VM) 会将来自泛化 Windows 镜像的计算机特定信息配置到虚拟机上。
您必须拥有泛化的 Windows 磁盘映像。
您必须创建一个unattend.xml
应答文件。有关详细信息,请参阅Microsoft 文档。
在 OpenShift Container Platform 控制台中,单击**虚拟化** → **目录**。
选择 Windows 模板,然后单击**自定义虚拟机**。
从**磁盘源**列表中选择**PVC(克隆 PVC)**。
选择泛化的 Windows 镜像的 PVC 项目和 PVC 名称。
单击**自定义虚拟机参数**。
单击**脚本**选项卡。
在**Sysprep**部分,单击**编辑**,浏览到unattend.xml
应答文件,然后单击**保存**。
单击**创建虚拟机**。
在初始启动期间,Windows 将使用unattend.xml
应答文件来专门化虚拟机。虚拟机现在可以使用了。
您可以使用virtctl
命令行工具上传操作系统镜像。您可以使用现有数据卷或为镜像创建新的数据卷。
您必须拥有ISO
、IMG
或QCOW2
操作系统镜像文件。
为了获得最佳性能,请使用virt-sparsify工具或xz
或gzip
实用程序压缩镜像文件。
您必须安装virtctl
。
客户端机器必须配置为信任OpenShift Container Platform路由器的证书。
运行virtctl image-upload
命令上传镜像。
$ virtctl image-upload dv <datavolume_name> \ (1)
--size=<datavolume_size> \ (2)
--image-path=</path/to/image> \ (3)
1 | 数据卷的名称。 |
2 | 数据卷的大小。例如:--size=500Mi ,--size=1G |
3 | 镜像的文件路径。 |
|
可选。要验证是否创建了数据卷,请运行以下命令查看所有数据卷
$ oc get dvs