×

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

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

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

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

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

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

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

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

  2. 单击没有可用引导源的模板图块。

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

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

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

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

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

泛化虚拟机镜像

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

您可以使用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. 在Red Hat OpenShift Service on AWS控制台中,单击**虚拟化** → **目录**。

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

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

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

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

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

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

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

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

    7. 单击**保存**。

新的卷会出现在选择启动卷列表中。这是您的新的黄金镜像。您可以使用此卷创建新的虚拟机。

虚拟机泛化的其他资源

创建 Windows 虚拟机

您可以通过将 Windows 镜像上传到持久卷声明 (PVC),然后在使用 AWS 网页控制台上的 Red Hat OpenShift 服务创建虚拟机时克隆 PVC 来创建 Windows 虚拟机 (VM)。

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

    1. 在网页控制台中导航到存储持久卷声明

    2. 单击创建持久卷声明使用数据上传表单

    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. 在 AWS 控制台上的 Red Hat OpenShift 服务中,单击虚拟化虚拟机

  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. 在Red Hat OpenShift Service on AWS控制台中,单击**虚拟化** → **目录**。

  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

  • 必须将客户端机器配置为信任 AWS 上的 Red Hat OpenShift 服务路由器的证书。

步骤
  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