第 7 章 高级虚拟机创建


7.1. 从红帽镜像创建虚拟机

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) 和卷快照会使用集群的默认存储类创建。如果在配置后选择了不同的默认存储类,您必须删除使用之前默认存储类配置的集群命名空间中的现有引导源。

您可以使用 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

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

先决条件

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

流程

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

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
    Copy to Clipboard Toggle word wrap
  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 Toggle word wrap

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

7.1.2. 异构集群支持

重要

对异构集群的金级镜像支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

异构集群是一个集群,节点有不同的架构。异构集群通过在一个集群中混合不同类型的硬件来提升最佳计算资源使用。这允许工作负载更好地匹配用于工作负载任务的硬件,而不是常规的计算平台。例如,在异构集群中,GPU 和通用计算资源可以合并,以及分配给适当硬件的工作负载。

重要

如果在异构集群中禁用了金级镜像支持,您可能会遇到节点和镜像架构之间的不一致的情况。当镜像用于虚拟机创建与节点架构不匹配时会出现这种情况。这可能导致虚拟机启动失败或者未按预期运行的虚拟机。当异构集群中没有启用此功能时,会生成警告级别警报 HCOMultiArchGoldenImagesDisabled

如果您有一个异构集群,但不想启用多个架构支持,请参阅 修改异构集群中的工作负载节点放置,以便将节点放置到特定架构的过程。

对异构集群的金级镜像支持扩展了以下区域中的金级镜像支持:

  • 启用 VM 创建者使用特定架构部署持久虚拟机。
  • 启用 VM 创建者定义支持异构集群的自定义金级镜像。

如果引导镜像支持所需的架构,则同一金级镜像可用于不同架构的节点。例如,支持 ARM 和 AMD 架构的金级镜像可用于两种类型的节点。

默认不启用对异构集群的金级镜像支持。有关启用此功能的步骤,请参阅启用异构集群支持

7.1.2.1. 启用异构集群支持

您可以通过将 HyperConverged 自定义资源(CR)中的 enableMultiArchBootImageImport 功能门设置为 true 来为异构集群启用金级镜像支持。

重要

对异构集群的金级镜像支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  • 您可以使用具有 cluster-admin 权限的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  • 运行以下命令启用 enableMultiArchBootImageImport 功能门:

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
      --type json -p '[{"op":"replace","path":"/spec/featureGates/enableMultiArchBootImageImport", "value": true}]'
    Copy to Clipboard Toggle word wrap

7.1.2.2. 在异构集群中修改常见的金级镜像源

您可以通过在 HyperConverged 自定义资源(CR)中指定 ssp.kubevirt.io/dict.architectures 注解中的支持的架构来修改异构集群中通用金级镜像的镜像源。

重要

对异构集群的金级镜像支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

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

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
    Copy to Clipboard Toggle word wrap
  2. 编辑 HyperConverged CR,在 dataImportCronTemplates 部分为 ssp.kubevirt.io/dict.architectures 注解添加适当的值。例如:

    #...
    spec:
      dataImportCronTemplates:
      - metadata:
          name: kubevirt-hyperconverged
          annotations:
            ssp.kubevirt.io/dict.architectures: "<architecture_list>" 
    1
    
        spec:
          schedule: "0 */12 * * *"
          template:
            spec:
              source:
                registry:
                    url: docker://my-private-registry/my-own-version-of-centos:8
          managedDataSource: centos-stream8
    #...
    Copy to Clipboard Toggle word wrap
    1
    此镜像支持的构架的逗号分隔列表。例如,如果镜像支持 amd64arm64 架构,则该值将是 "amd64,arm64"
  3. 保存并退出编辑器以更新 HyperConverged CR。

7.1.2.3. 在异构集群中添加自定义金级镜像

重要

对异构集群的金级镜像支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

通过在 HyperConverged 自定义资源(CR)的 spec.dataImportCronTemplates.metadata.annotations 小节中设置 ssp.kubevirt.io/dict.architectures 注解,在异构集群中添加自定义金级镜像。此注解列出了镜像支持的架构。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

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

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
    Copy to Clipboard Toggle word wrap
  2. 编辑 HyperConverged CR,以添加自定义金级镜像。您必须在 dataImportCronTemplates 部分中为 ssp.kubevirt.io/dict.architectures 注解添加适当的值。例如:

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
    spec:
      dataImportCronTemplates:
      - metadata:
          name: custom-image1
          annotations:
            ssp.kubevirt.io/dict.architectures: "<architecture_list>" 
    1
    
        spec:
          schedule: "0 */12 * * *"
          template:
            spec:
              source:
                registry:
                  url: docker://myprivateregistry/custom1
          managedDataSource: custom1
          retentionPolicy: "All"
    #...
    Copy to Clipboard Toggle word wrap
    1
    此镜像支持的构架的逗号分隔列表。例如,如果镜像支持 amd64arm64 架构,则该值将是 "amd64,arm64"
    注意

    镜像可能比集群中要使用的架构更多。您不必列出镜像支持的所有架构,而只列出您要为其创建引导源的所有架构。

  3. 保存并退出编辑器以更新 HyperConverged CR。

7.1.2.4. 修改异构集群中的工作负载节点放置

重要

对异构集群的金级镜像支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

如果您有一个异构集群,但不想启用多个架构支持,您可以将 HyperConverged 自定义资源(CR)中的工作负载节点放置修改为仅包含具有特定架构的节点。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

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

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
    Copy to Clipboard Toggle word wrap
  2. 编辑 HyperConverged CR,以修改工作负载节点放置,使其只包含具有特定架构的节点。例如:

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
    spec:
    #...
      workloads:
        nodePlacement:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                  - matchExpressions:
                      - key: kubernetes.io/arch
                        operator: In
                        values:
                          - <node_architecture> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <node_architecture > 替换为目标架构。例如,要将放置限制为 AMD 节点,请使用 amd64
  3. 保存并退出编辑器以更新 HyperConverged CR。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat