×

您可以通过从本地计算机上传操作系统镜像来创建虚拟机 (VM)。

您可以通过将 Windows 镜像上传到 PVC 来创建 Windows 虚拟机。然后在创建虚拟机时克隆 PVC。

您必须在从 Red Hat 未提供的操作系统镜像创建的虚拟机上安装 QEMU 访客代理

您还必须在 Windows 虚拟机上安装 VirtIO 驱动程序

使用 Web 控制台从上传的镜像创建虚拟机

您可以使用 OpenShift Container Platform Web 控制台从上传的操作系统镜像创建虚拟机 (VM)。

先决条件
  • 您必须拥有 IMGISOQCOW2 镜像文件。

步骤
  1. 在 Web 控制台中导航到**虚拟化** → **目录**。

  2. 单击没有可用启动源的模板图块。

  3. 单击**自定义虚拟机**。

  4. 在**自定义模板参数**页面上,展开**存储**并从**磁盘源**列表中选择**上传(将新文件上传到 PVC)**。

  5. 浏览到您本地计算机上的镜像并设置磁盘大小。

  6. 单击**自定义虚拟机**。

  7. 单击**创建虚拟机**。

泛化虚拟机镜像

在使用镜像创建黄金镜像(虚拟机 (VM) 的预配置快照)之前,您可以泛化 Red Hat Enterprise Linux (RHEL) 镜像以删除所有特定于系统的配置数据。您可以使用黄金镜像来部署新的虚拟机。

您可以使用 virtctlguestfsvirt-sysprep 工具泛化 RHEL 虚拟机。

先决条件
  • 您有一个用作基础虚拟机的 RHEL 虚拟机 (VM)。

  • 您已安装 OpenShift CLI(oc)。

  • 您已安装virtctl工具。

步骤
  1. 如果 RHEL 虚拟机正在运行,请使用以下命令将其停止

    $ virtctl stop <my_vm_name>
  2. 可选:克隆虚拟机以避免丢失原始虚拟机中的数据。然后,您可以泛化克隆的虚拟机。

  3. 运行以下命令检索存储虚拟机根文件系统的dataVolume

    $ oc get vm <my_vm_name> -o jsonpath="{.spec.template.spec.volumes}{'\n'}"
    示例输出
    [{"dataVolume":{"name":"<my_vm_volume>"},"name":"rootdisk"},{"cloudInitNoCloud":{...}]
  4. 运行以下命令检索与列出的dataVolume匹配的持久卷声明 (PVC)

    $ oc get pvc
    示例输出
    NAME            STATUS   VOLUME  CAPACITY   ACCESS MODES  STORAGECLASS     AGE
    <my_vm_volume> Bound  …

    如果您的集群配置不允许您克隆虚拟机,为了避免丢失原始虚拟机中的数据,您可以将虚拟机 PVC 克隆到数据卷。然后,您可以使用克隆的 PVC 创建金版镜像。

    如果您通过克隆 PVC 来创建金版镜像,请使用克隆的 PVC 继续执行后续步骤。

  5. 使用libguestfs-tools部署一个新的交互式容器,并将 PVC 附加到它,运行以下命令

    $ virtctl guestfs <my-vm-volume> --uid 107

    此命令将打开一个 shell,供您运行下一个命令。

  6. 运行以下命令删除系统特定配置

    $ virt-sysprep -a disk.img
  7. 在 OpenShift Container Platform 控制台中,单击**虚拟化** → **目录**。

  8. 单击**添加卷**。

  9. 在**添加卷**窗口中

    1. 从**源类型**列表中,选择**使用现有卷**。

    2. 从**卷项目**列表中,选择您的项目。

    3. 从**卷名称**列表中,选择正确的 PVC。

    4. 在**卷名称**字段中,输入新金版镜像的名称。

    5. 从**首选项**列表中,选择您正在使用的 RHEL 版本。

    6. 从**默认实例类型**列表中,选择具有之前选择的 RHEL 版本所需的正确 CPU 和内存要求的实例类型。

    7. 单击**保存**。

新卷将显示在**选择要从中引导的卷**列表中。这是您的新金版镜像。您可以使用此卷创建新的虚拟机。

泛化虚拟机的其他资源

创建 Windows 虚拟机

您可以通过将 Windows 镜像上传到持久卷声明 (PVC),然后在使用 OpenShift Container Platform Web 控制台创建虚拟机时克隆 PVC 来创建 Windows 虚拟机 (VM)。

先决条件
步骤
  1. 将 Windows 镜像上传为新的 PVC

    1. 在 Web 控制台中导航到**存储** → **PersistentVolumeClaims**。

    2. 单击**创建 PersistentVolumeClaim** → **使用数据上传表单**。

    3. 浏览到 Windows 镜像并选择它。

    4. 输入 PVC 名称,选择存储类和大小,然后单击**上传**。

      Windows 镜像已上传到 PVC。

  2. 通过克隆上传的 PVC 配置新的虚拟机

    1. 导航到**虚拟化** → **目录**。

    2. 选择 Windows 模板磁贴,然后单击**自定义虚拟机**。

    3. 从**磁盘源**列表中选择**克隆(克隆 PVC)**。

    4. 选择 PVC 项目、Windows 镜像 PVC 和磁盘大小。

  3. 将应答文件应用于虚拟机

    1. 单击**自定义虚拟机参数**。

    2. 在**脚本**选项卡的**Sysprep**部分,单击**编辑**。

    3. 浏览到autounattend.xml应答文件,然后单击**保存**。

  4. 设置虚拟机的运行策略

    1. 清除**创建后启动此虚拟机**,以便虚拟机不会立即启动。

    2. 单击**创建虚拟机**。

    3. 在**YAML**选项卡上,将running:false替换为runStrategy: RerunOnFailure,然后单击**保存**。

  5. 单击选项菜单 kebab 并选择**启动**。

    虚拟机将从包含autounattend.xml应答文件的sysprep磁盘启动。

泛化 Windows 虚拟机镜像

您可以泛化 Windows 操作系统镜像,以删除所有系统特定配置数据,然后才能使用该镜像创建新的虚拟机 (VM)。

在泛化虚拟机之前,您必须确保sysprep工具无法在无人参与的 Windows 安装后检测到应答文件。

先决条件
  • 安装了 QEMU 来宾代理的正在运行的 Windows 虚拟机。

步骤
  1. 在 OpenShift Container Platform 控制台中,单击**虚拟化** → **虚拟机**。

  2. 选择 Windows 虚拟机以打开**虚拟机详细信息**页面。

  3. 单击**配置** → **磁盘**。

  4. 单击sysprep磁盘旁边的选项菜单 kebab 并选择**分离**。

  5. 单击**分离**。

  6. 重命名C:\Windows\Panther\unattend.xml以避免被sysprep工具检测到。

  7. 通过运行以下命令启动sysprep程序

    %WINDIR%\System32\Sysprep\sysprep.exe /generalize /shutdown /oobe /mode:vm
  8. sysprep工具完成后,Windows 虚拟机将关闭。虚拟机的磁盘映像现在可作为 Windows 虚拟机的安装映像使用。

您现在可以专门化虚拟机。

专门化 Windows 虚拟机镜像

专门化 Windows 虚拟机 (VM) 会将来自泛化 Windows 镜像的计算机特定信息配置到虚拟机上。

先决条件
  • 您必须拥有泛化的 Windows 磁盘映像。

  • 您必须创建一个unattend.xml应答文件。有关详细信息,请参阅Microsoft 文档

步骤
  1. 在 OpenShift Container Platform 控制台中,单击**虚拟化** → **目录**。

  2. 选择 Windows 模板,然后单击**自定义虚拟机**。

  3. 从**磁盘源**列表中选择**PVC(克隆 PVC)**。

  4. 选择泛化的 Windows 镜像的 PVC 项目和 PVC 名称。

  5. 单击**自定义虚拟机参数**。

  6. 单击**脚本**选项卡。

  7. 在**Sysprep**部分,单击**编辑**,浏览到unattend.xml应答文件,然后单击**保存**。

  8. 单击**创建虚拟机**。

在初始启动期间,Windows 将使用unattend.xml应答文件来专门化虚拟机。虚拟机现在可以使用了。

使用命令行从上传的镜像创建虚拟机

您可以使用virtctl命令行工具上传操作系统镜像。您可以使用现有数据卷或为镜像创建新的数据卷。

先决条件
  • 您必须拥有ISOIMGQCOW2操作系统镜像文件。

  • 为了获得最佳性能,请使用virt-sparsify工具或xzgzip实用程序压缩镜像文件。

  • 您必须安装virtctl

  • 客户端机器必须配置为信任OpenShift Container Platform路由器的证书。

步骤
  1. 运行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 镜像的文件路径。
    • 如果您不想创建新的数据卷,请省略--size参数并包含--no-create标志。

    • 将磁盘镜像上传到PVC时,PVC大小必须大于未压缩虚拟磁盘的大小。

    • 要在使用HTTPS时允许不安全的服务器连接,请使用--insecure参数。当您使用--insecure标志时,将**不会**验证上传端点的真实性。

  2. 可选。要验证是否创建了数据卷,请运行以下命令查看所有数据卷

    $ oc get dvs