第 7 章 高级虚拟机创建


7.1. 在 web 控制台中创建虚拟机

7.1.1. 从红帽镜像创建虚拟机概述

红帽镜像是金级镜像。它们作为容器磁盘在安全 registry 中发布。Containerized Data Importer (CDI) 轮询容器磁盘并将其导入到集群中,并将其存储在 openshift-virtualization-os-images 项目中作为快照或持久性卷声明(PVC)。您可以选择将 自定义命名空间 用于金级镜像。

红帽镜像会自动更新。您可以为这些镜像禁用和重新启用自动更新。请参阅管理红帽引导源更新

集群管理员可以在 OpenShift Virtualization web 控制台中为 Red Hat Enterprise Linux (RHEL)虚拟机启用自动订阅。

您可以使用以下方法之一从红帽提供的操作系统镜像创建虚拟机(VM):

重要

不要在默认的 openshift Galaxy 命名空间中创建虚拟机。相反,创建一个新命名空间或使用没有 openshift 前缀的现有命名空间。

7.1.1.1. 关于金级镜像

金级镜像是虚拟机(VM)的预配置快照,您可以用作部署新虚拟机的资源。例如,您可以使用金级镜像来更加一致地置备相同的系统环境,并更快高效地部署系统。

7.1.1.1.1. 金级镜像如何工作?

通过在参考机器或虚拟机上安装和配置操作系统和软件应用程序来创建金级镜像。这包括设置系统、安装所需的驱动程序、应用补丁和更新以及配置特定选项和首选项。

创建金级镜像后,它会保存为模板或镜像文件,可在多个集群中复制和部署。金级镜像可以通过维护人员定期更新,以纳入必要的软件更新和补丁,确保镜像保持最新且安全,并且新创建的虚拟机基于这个更新的镜像。

7.1.1.1.2. 红帽对金级镜像的实施

对于 Red Hat Enterprise Linux (RHEL)版本,红帽发布金级镜像作为 registry 中的容器磁盘。容器磁盘是虚拟机镜像,它作为容器镜像 registry 存储在容器镜像 registry 中。安装 OpenShift Virtualization 后,任何发布的镜像将自动在连接的集群中提供。镜像在集群中可用后,可以使用它们创建虚拟机。

7.1.1.2. 关于虚拟机引导源

虚拟机 (VM) 由虚拟机定义以及由数据卷支持的一个或多个磁盘组成。VM 模板允许您使用预定义的规格创建虚拟机。

每个模板都需要一个引导源,它是一个完全配置的磁盘镜像,包括配置的驱动程序。每个模板都包含一个虚拟机定义,其中包含指向引导源的指针。每个引导源都有一个预定义的名称和命名空间。对于某些操作系统,会自动提供一个引导源。如果没有提供,管理员必须准备自定义引导源。

提供的引导源会自动更新至操作系统的最新版本。对于自动更新的引导源,持久性卷声明 (PVC) 和卷快照会使用集群的默认存储类创建。如果在配置后选择了不同的默认存储类,您必须删除使用之前默认存储类配置的集群命名空间中的现有引导源。

7.1.1.3. 为金级镜像配置自定义命名空间

金级镜像的默认命名空间是 openshift-virtualization-os-images,但您可以配置自定义命名空间来限制用户对默认引导源的访问。

7.1.1.3.1. 使用 Web 控制台为金级镜像配置自定义命名空间

您可以使用 Red Hat OpenShift Service on AWS Web 控制台为集群中的金级镜像配置自定义命名空间。

流程

  1. 在 web 控制台中,选择 Virtualization Overview
  2. 选择 Settings 选项卡。
  3. Cluster 选项卡中,选择 General settings Bootable volumes 项目
  4. 选择要用于金级镜像的命名空间。

    1. 如果已创建了命名空间,请从 Project 列表中选择它。
    2. 如果您没有创建命名空间,请滚动到列表的底部,然后单击 Create project

      1. Create project 对话框的 Name 字段中输入您的新命名空间的名称。
      2. Create
7.1.1.3.2. 使用 CLI 为金级镜像配置自定义命名空间

您可以通过在 HyperConverged 自定义资源(CR)中设置 spec.commonBootImageNamespace 字段,为集群中的金级镜像配置自定义命名空间。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您创建了用于金级镜像的命名空间。

流程

  1. 运行以下命令,在默认编辑器中打开 HyperConverged CR:

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
    Copy to Clipboard
  2. 通过更新 spec.commonBootImageNamespace 字段的值来配置自定义命名空间:

    配置文件示例

    apiVersion: hco.kubevirt.io/v1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: openshift-cnv
    spec:
      commonBootImageNamespace: <custom_namespace> 
    1
    
    # ...
    Copy to Clipboard

    1
    用于金级镜像的命名空间。
  3. 保存更改并退出编辑器。

7.1.2. 通过从网页导入镜像来创建虚拟机

您可以通过从 web 页面导入操作系统镜像来创建虚拟机 (VM)。

重要

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

7.1.2.1. 使用 Web 控制台从网页上的镜像创建虚拟机

您可以使用 Red Hat OpenShift Service on AWS web 控制台从网页中导入镜像来创建虚拟机(VM)。

先决条件

  • 您必须有权访问包含镜像的网页。

流程

  1. 在 web 控制台中进入到 Virtualization Catalog
  2. 点没有可用引导源的模板标题。
  3. Customize VirtualMachine
  4. Customize template parameters 页面中,展开 Storage,然后从 Disk source 列表中选择 URL (creates PVC)
  5. 输入镜像 URL。示例:https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
  6. 设置磁盘大小。
  7. 点击 Next
  8. Create VirtualMachine

7.1.2.2. 使用 CLI 从网页上的镜像创建虚拟机

您可以使用命令行从网页中的镜像创建虚拟机 (VM)。

创建虚拟机时,具有镜像的数据卷将导入到持久性存储中。

先决条件

  • 您必须有包含镜像的网页的访问凭证。
  • 已安装 virtctl CLI。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 为虚拟机创建 VirtualMachine 清单,并将它保存为 YAML 文件。例如,要从网页上的镜像创建最小 Red Hat Enterprise Linux (RHEL)虚拟机,请运行以下命令:

    $ virtctl create vm --name vm-rhel-9 --instancetype u1.small --preference rhel.9 --volume-import type:http,url:https://example.com/rhel9.qcow2,size:10Gi
    Copy to Clipboard
  2. 查看虚拟机的 VirtualMachine 清单:

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-rhel-9 
    1
    
    spec:
      dataVolumeTemplates:
      - metadata:
          name: imported-volume-6dcpf 
    2
    
        spec:
          source:
            http:
              url: https://example.com/rhel9.qcow2 
    3
    
          storage:
            resources:
              requests:
                storage: 10Gi 
    4
    
      instancetype:
        name: u1.small 
    5
    
      preference:
        name: rhel.9 
    6
    
      runStrategy: Always
      template:
        spec:
          domain:
            devices: {}
            resources: {}
          terminationGracePeriodSeconds: 180
          volumes:
          - dataVolume:
              name: imported-volume-6dcpf
            name: imported-volume-6dcpf
    Copy to Clipboard
    1
    虚拟机名称。
    2
    数据卷名称。
    3
    镜像的 URL。
    4
    为数据卷请求的存储大小。
    5
    用于控制虚拟机资源大小的实例类型。
    6
    首选使用。
  3. 运行以下命令来创建虚拟机:

    $ oc create -f <vm_manifest_file>.yaml
    Copy to Clipboard

    oc create 命令创建数据卷和虚拟机。CDI 控制器创建一个带有正确注解和导入过程的底层 PVC。导入完成后,数据卷状态变为 Succeeded。您可以启动虚拟机。

    数据卷置备在后台进行,因此无需监控进程。

验证

  1. importer pod 从指定的 URL 下载镜像,并将其存储在置备的持久性卷上。查看 importer pod 的状态:

    $ oc get pods
    Copy to Clipboard
  2. 监控数据卷的状态:

    $ oc get dv <data_volume_name>
    Copy to Clipboard

    如果置备成功,数据卷阶段为 Succeeded

    输出示例

    NAME                    PHASE       PROGRESS   RESTARTS   AGE
    imported-volume-6dcpf   Succeeded   100.0%                18s
    Copy to Clipboard

  3. 通过访问其串行控制台来验证置备是否已完成,以及虚拟机是否已启动:

    $ virtctl console <vm_name>
    Copy to Clipboard

    如果虚拟机正在运行且串行控制台可以访问,输出如下所示:

    输出示例

    Successfully connected to vm-rhel-9 console. The escape sequence is ^]
    Copy to Clipboard

7.1.3. 通过上传镜像来创建虚拟机

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

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

重要

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

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

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

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

先决条件

  • 您必须有一个 IMGISOQCOW2 镜像文件。

流程

  1. 在 web 控制台中进入到 Virtualization Catalog
  2. 点没有可用引导源的模板标题。
  3. Customize VirtualMachine
  4. Customize template parameters 页面中,展开 Storage,然后从 Disk source 列表中选择 Upload (Upload a new file to a PVC)
  5. 浏览到本地机器上的镜像并设置磁盘大小。
  6. Customize VirtualMachine
  7. Create VirtualMachine
7.1.3.1.1. 常规调整虚拟机镜像

在使用镜像创建金级镜像(虚拟机)前,您可以对 Red Hat Enterprise Linux (RHEL)镜像进行常规化,以删除所有特定于系统的配置数据。您可以使用金级镜像来部署新虚拟机。

您可使用 virtctlguestfsvirt-sysprep 工具对 RHEL 虚拟机进行常规化。

先决条件

  • 您有一个 RHEL 虚拟机(VM)作为基本虚拟机。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 virtctl 工具。

流程

  1. 输入以下命令停止 RHEL 虚拟机(如果它正在运行):

    $ virtctl stop <my_vm_name>
    Copy to Clipboard
  2. 可选:克隆虚拟机,以避免丢失原始虚拟机中的数据。然后您可以对克隆的虚拟机进行常规化。
  3. 运行以下命令,检索为虚拟机存储根文件系统的 dataVolume

    $ oc get vm <my_vm_name> -o jsonpath="{.spec.template.spec.volumes}{'\n'}"
    Copy to Clipboard

    输出示例

    [{"dataVolume":{"name":"<my_vm_volume>"},"name":"rootdisk"},{"cloudInitNoCloud":{...}]
    Copy to Clipboard

  4. 运行 followimg 命令,检索与列出的 dataVolume 匹配的持久性卷声明(PVC):

    $ oc get pvc
    Copy to Clipboard

    输出示例

    NAME            STATUS   VOLUME  CAPACITY   ACCESS MODES  STORAGECLASS     AGE
    <my_vm_volume> Bound  …
    Copy to Clipboard

    注意

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

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

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

    $ virtctl guestfs <my-vm-volume> --uid 107
    Copy to Clipboard

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

  6. 运行以下命令删除所有特定于您的系统的配置:

    $ virt-sysprep -a disk.img
    Copy to Clipboard
  7. 在 Red Hat OpenShift Service on AWS 控制台中点 Virtualization Catalog
  8. 单击 Add volume
  9. Add volume 窗口中:

    1. Source type 列表中,选择 Use existing Volume
    2. Volume project 列表中,选择您的项目。
    3. Volume name 列表中,选择正确的 PVC。
    4. Volume name 字段中输入新金级镜像的名称。
    5. Preference 列表中,选择您使用的 RHEL 版本。
    6. Default Instance Type 列表中,为您之前选择的 RHEL 版本选择具有正确 CPU 和内存要求的实例类型。
    7. 点击 Save

新卷会出现在 Select volume to boot from 列表中。这是您的新金级镜像。您可以使用这个卷创建新虚拟机。

7.1.3.2. 创建 Windows 虚拟机

您可以通过上传 Windows 镜像到持久性卷声明(PVC)来创建 Windows 虚拟机,然后在使用 Red Hat OpenShift Service on AWS web 控制台创建虚拟机时克隆 PVC。

先决条件

流程

  1. 将 Windows 镜像上传为新 PVC:

    1. 在 web 控制台中进入到 Storage PersistentVolumeClaims
    2. Create PersistentVolumeClaim With Data upload form
    3. 浏览 Windows 镜像并选择它。
    4. 输入 PVC 名称,选择存储类和大小,然后点 Upload

      Windows 镜像上传到 PVC。

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

    1. 进入到 Virtualization Catalog
    2. 选择 Windows 模板标题并点 Customize VirtualMachine
    3. Disk source 列表中选择 Clone (clone PVC)
    4. 选择 PVC 项目、Windows 镜像 PVC 和磁盘大小。
  3. 将回答文件应用到虚拟机:

    1. Customize VirtualMachine 参数
    2. Scripts 选项卡的 Sysprep 部分,点 Edit
    3. 浏览到 autounattend.xml 回答文件,然后点保存
  4. 设置虚拟机的 run 策略:

    1. 清除 Start this VirtualMachine after creation,以便虚拟机不会立即启动。
    2. Create VirtualMachine
    3. YAML 标签页中,将 running:false 替换为 runStrategy: RerunOnFailure,点 Save
  5. 点击 Options 菜单 kebab 并选择 Start

    虚拟机从包含 autounattend.xml 回答文件的 sysprep 磁盘引导。

7.1.3.2.1. 常规化 Windows 虚拟机镜像

在使用镜像创建新虚拟机前,您可以常规化 Windows 操作系统镜像删除所有特定于系统的配置数据。

在常规调整虚拟机前,您必须确保 sysprep 工具在无人值守的 Windows 安装后无法检测到应答文件。

先决条件

  • 正在运行的 Windows 虚拟机安装有 QEMU 客户机代理。

流程

  1. 在 Red Hat OpenShift Service on AWS 控制台中,点 Virtualization VirtualMachines
  2. 选择 Windows 虚拟机以打开 VirtualMachine 详情页。
  3. Configuration Disks
  4. sysprep 磁盘 kebab 旁边的 Options 菜单并选择 Detach
  5. 单击 Detach
  6. 重命名 C:\Windows\Panther\unattend.xml 以避免 sysprep 工具对其进行检测。
  7. 运行以下命令启动 sysprep 程序:

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

现在,您可以对虚拟机进行特殊化。

7.1.3.2.2. 特殊化 Windows 虚拟机镜像

特殊化 Windows 虚拟机 (VM) 配置从常规化 Windows 镜像到虚拟机中的计算机特定信息。

先决条件

  • 您必须有一个通用的 Windows 磁盘镜像。
  • 您必须创建一个 unattend.xml 回答文件。详情请查看 Microsoft 文档

流程

  1. 在 Red Hat OpenShift Service on AWS 控制台中点 Virtualization Catalog
  2. 选择 Windows 模板并点 Customize VirtualMachine
  3. Disk source 列表中选择 PVC(clone PVC)。
  4. 选择通用 Windows 镜像的 PVC 项目和 PVC 名称。
  5. Customize VirtualMachine 参数
  6. Scripts 选项卡。
  7. Sysprep 部分中,点 Edit,浏览到 unattend.xml 回答文件,然后点保存
  8. Create VirtualMachine

在初次启动过程中,Windows 使用 unattend.xml 回答文件来专注于虚拟机。虚拟机现在可供使用。

7.1.3.3. 使用 CLI 从上传的镜像创建虚拟机

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

先决条件

  • 您必须有一个 ISOIMGQCOW2 操作系统镜像文件。
  • 为获得最佳性能,请使用 virt-sparsify 工具或 xzgzip 工具压缩镜像文件。
  • 客户端机器必须配置为信任 Red Hat OpenShift Service on AWS 路由器的证书。
  • 已安装 virtctl CLI。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 运行 virtctl image-upload 命令上传镜像:

    $ virtctl image-upload dv <datavolume_name> \ 
    1
    
      --size=<datavolume_size> \ 
    2
    
      --image-path=</path/to/image> \ 
    3
    Copy to Clipboard
    1
    数据卷的名称。
    2
    数据卷的大小。例如: --size=500Mi, --size=1G
    3
    镜像的文件路径。
    注意
    • 如果您不想创建新数据卷,请省略 --size 参数,并包含 --no-create 标志。
    • 将磁盘镜像上传到 PVC 时,PVC 大小必须大于未压缩的虚拟磁盘的大小。
    • 若要在使用 HTTPS 时允许不安全的服务器连接,请使用 --insecure 参数。当您使用 --insecure 标志时,不会验证上传端点的真实性。
  2. 可选。要验证数据卷是否已创建,运行以下命令来查看所有数据卷:

    $ oc get dvs
    Copy to Clipboard

7.1.4. 克隆虚拟机

您可以克隆虚拟机(VM)或从快照创建新虚拟机。

重要

不支持使用附加 vTPM 设备或从快照创建新虚拟机的虚拟机。

7.1.4.1. 使用 Web 控制台克隆虚拟机

您可以使用 Web 控制台克隆现有虚拟机。

流程

  1. 在 web 控制台中进入到 Virtualization VirtualMachines
  2. 选择一个虚拟机以打开 VirtualMachine 详情页。
  3. Actions

    或者,通过右键单击虚拟机来访问树视图中的同一菜单。

  4. 选择 Clone
  5. Clone VirtualMachine 页面中,输入新虚拟机的名称。
  6. (可选)选择 Start cloned VM 复选框来启动克隆的虚拟机。
  7. 单击 Clone

7.1.4.2. 使用 Web 控制台从现有快照创建虚拟机

您可以通过复制现有快照来创建新虚拟机。

流程

  1. 在 web 控制台中进入到 Virtualization VirtualMachines
  2. 选择一个虚拟机以打开 VirtualMachine 详情页。
  3. Snapshots 标签页。
  4. 点您要复制的快照的 Options 菜单 kebab
  5. 选择 Create VirtualMachine
  6. 输入虚拟机的名称。
  7. (可选)选择 Start this VirtualMachine after creation 来启动新的虚拟机。
  8. Create
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat