6.9. 引导镜像管理


对于 Google Cloud Platform (GCP) 和 Amazon Web Services (AWS) 集群,默认情况下,Machine Config Operator (MCO) 管理和更新用于扩展节点的引导镜像。这意味着,每当您升级集群时,MCO 会默认更新引导镜像。

对于所有其他平台,MCO 不使用每个集群更新更新引导镜像。

6.9.1. 关于引导镜像管理

默认情况下,对于 Google Cloud Platform (GCP)和 Amazon Web Services (AWS)集群,Machine Config Operator (MCO)会在更新集群时更新集群中的机器集中的引导镜像。

对于 GCP 和 AWS,如果需要,您可以禁用引导镜像管理功能。当禁用该功能时,引导镜像不再会与集群进行更新。例如,如果禁用了这个功能,如果您的集群最初使用 OpenShift Container Platform 4.16 创建,MCO 用于创建节点的引导镜像是相同的 4.16 版本,即使您的集群是更新的版本。

但是,使用旧的引导镜像可能会导致以下问题:

  • 启动节点的额外时间
  • 证书过期问题
  • 版本偏移问题

有关如何禁用此功能的详情,请参考"禁用引导镜像管理"。如果禁用此功能,您可以随时重新启用该功能。如需更多信息,请参阅"启用引导镜像管理"。

注意

配置引导镜像管理的功能仅适用于 GCP 和 AWS 集群。由 Cluster CAPI Operator 管理的集群不支持它。

禁用或重新启用该功能后集群的行为取决于您进行更改的时间,包括以下情况:

  • 如果您在升级到新的 OpenShift Container Platform 版本前禁用该功能:

    • 机器集使用的引导镜像版本与禁用该功能时相同的 OpenShift Container Platform 版本相同。
    • 当您扩展节点时,新节点使用相同的 OpenShift Container Platform 版本。
  • 如果您在升级到新的 OpenShift Container Platform 版本后禁用该功能:

    • 机器集使用的引导镜像版本已更新,以匹配更新的 OpenShift Container Platform 版本。
    • 在扩展节点时,新节点使用更新的 OpenShift Container Platform 版本。
    • 如果您升级到更新的 OpenShift Container Platform 版本,机器集中的引导镜像版本将保留在当前版本中,且不会在集群中更新。
  • 如果您在禁用后启用该功能:

    • 如果不同,机器集使用的引导镜像版本会更新为当前的 OpenShift Container Platform 版本。
    • 在扩展节点时,新节点使用集群中的当前 OpenShift Container Platform 版本。
注意

因为只有在扩展节点时才使用引导镜像,所以此功能不会影响现有节点。

要查看集群中使用的当前引导镜像,请检查机器集:

注意

根据具体的平台,机器集中的引导镜像的位置和格式可能会有所不同。但是,引导镜像总是列在 spec.template.spec.providerSpec. 参数中。

使用引导镜像引用的 GCP 机器集示例

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  name: ci-ln-hmy310k-72292-5f87z-worker-a
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    spec:
# ...
      providerSpec:
# ...
        value:
          disks:
          - autoDelete: true
            boot: true
            image: projects/rhcos-cloud/global/images/rhcos-412-85-202203181601-0-gcp-x86-64 
1

# ...
Copy to Clipboard Toggle word wrap

1
此引导镜像与最初安装的 OpenShift Container Platform 版本相同,在本例中为 OpenShift Container Platform 4.12,无论集群的当前版本是什么。在机器集中表示引导镜像的方式取决于平台,因为 providerSpec 字段的结构与平台不同。

使用引导镜像引用的 AWS 机器集示例

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  name: ci-ln-hmy310k-72292-5f87z-worker-a
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    spec:
# ...
      providerSpec:
         value:
          ami:
            id: ami-0e8fd9094e487d1ff
# ...
Copy to Clipboard Toggle word wrap

重要

如果要启用引导镜像管理的任何机器集使用基于 Ignition 版本 2.2.0 的 *-user-data secret,Machine Config Operator 会在启用该功能时将 Ignition 版本转换为 3.4.0。OpenShift Container Platform 版本 4.5 和较低版本 2.2.0。如果这个转换失败,MCO 或集群可能会降级。包含 err: converting ignition stub failed: failed to parse Ignition config 的错误信息会添加到 oc get ClusterOperator machine-config 命令的输出中。您可以使用以下常规步骤来更正问题:

  1. 禁用引导镜像管理功能。如需更多信息,请参阅"禁用引导镜像管理"。
  2. 手动更新 *-user-data secret,以使用 Ignition 版本到 3.2.0。
  3. 启用引导镜像管理功能。如需更多信息,请参阅"启用引导镜像管理"。

6.9.2. 禁用引导镜像管理

默认情况下,对于 Google Cloud Platform (GCP)和 Amazon Web Services (AWS)集群,Machine Config Operator (MCO)会在更新集群时管理并更新集群中的机器集中的引导镜像。

您可以通过编辑 MachineConfiguration 对象来禁用集群的引导镜像管理功能。禁用后,Machine Config Operator (MCO) 不再管理集群中的引导镜像,不再使用每个集群更新来更新引导镜像。

禁用这个功能不会将节点或机器集回滚到原始安装的引导镜像。机器集会保留禁用该功能时出现的引导镜像版本,如果集群在以后升级到新的 OpenShift Container Platform 版本,则不会更新。此功能对现有节点没有影响。

在 GCP 或 AWS 集群中禁用该功能后,您可以随时重新启用该功能。如需更多信息,请参阅"启用更新的引导镜像"。

流程

  1. 编辑 MachineConfiguration 对象,为某些或所有机器集禁用引导镜像管理功能:

    $ oc edit MachineConfiguration cluster
    Copy to Clipboard Toggle word wrap
    • 可选:禁用所有机器集的功能:

      apiVersion: operator.openshift.io/v1
      kind: MachineConfiguration
      metadata:
        name: cluster
        namespace: openshift-machine-config-operator
      spec:
      # ...
        managedBootImages: 
      1
      
          machineManagers:
          - apiGroup: machine.openshift.io 
      2
      
            resource: machinesets 
      3
      
            selection:
              mode: None 
      4
      Copy to Clipboard Toggle word wrap
      1
      配置引导镜像管理功能。
      2
      指定一个 API 组。这必须是 machine.openshift.io
      3
      指定指定 API 组中的资源以应用更改。这必须是 machinesets
      4
      指定为集群中的所有机器集禁用该功能。

验证

  • 通过查看机器配置对象来查看引导镜像管理功能的当前状态:

    $ oc get machineconfiguration cluster -o yaml
    Copy to Clipboard Toggle word wrap

    使用引导镜像引用的机器集示例

    kind: MachineConfiguration
    metadata:
      name: cluster
    # ...
    status:
      conditions:
      - lastTransitionTime: "2025-05-01T20:11:49Z"
        message: Reconciled 2 of 4 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets
          | Reconciled 0 of 0 CAPI MachineDeployments
        reason: BootImageUpdateConfigurationUpdated
        status: "True"
        type: BootImageUpdateProgressing
      - lastTransitionTime: "2025-05-01T19:30:13Z"
        message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments
        reason: BootImageUpdateConfigurationUpdated
        status: "False"
        type: BootImageUpdateDegraded
      managedBootImagesStatus:
        machineManagers:
        - apiGroup: machine.openshift.io
          resource: machinesets
          selection:
            mode: All
    Copy to Clipboard Toggle word wrap

  • 运行以下命令来获取引导镜像版本。根据具体的平台,机器集中的引导镜像的位置和格式可能会有所不同。但是,引导镜像总是列在 spec.template.spec.providerSpec. 参数中。

    $ oc get machinesets <machineset_name> -n openshift-machine-api -o yaml
    Copy to Clipboard Toggle word wrap

    使用引导镜像引用的机器集示例

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: ci-ln-77hmkpt-72292-d4pxp
        update-boot-image: "true"
      name: ci-ln-77hmkpt-72292-d4pxp-worker-a
      namespace: openshift-machine-api
    spec:
    # ...
      template:
    # ...
        spec:
    # ...
          providerSpec:
    # ...
            value:
              disks:
              - autoDelete: true
                boot: true
                image: projects/rhcos-cloud/global/images/<boot_image> 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    此引导镜像与当前的 OpenShift Container Platform 版本相同。

6.9.3. 启用引导镜像管理

默认情况下,对于 Google Cloud Platform (GCP)和 Amazon Web Services (AWS)集群,Machine Config Operator (MCO)会在更新集群时更新集群中的机器集中的引导镜像。

如果您禁用了引导镜像管理功能,导致引导镜像没有更新,您可以通过编辑 MachineConfiguration 对象来重新启用该功能。

启用该功能将引导镜像更新至当前的 OpenShift Container Platform 版本。如果以后集群再次更新至新的 OpenShift Container Platform 版本,则会再次更新引导镜像。启用功能后创建的新节点使用更新的引导镜像。此功能对现有节点没有影响。

流程

  1. 编辑名为 clusterMachineConfiguration 对象,为某些或所有机器集启用引导镜像管理功能:

    $ oc edit MachineConfiguration cluster
    Copy to Clipboard Toggle word wrap
    • 可选:为所有机器集启用引导镜像管理功能:

      apiVersion: operator.openshift.io/v1
      kind: MachineConfiguration
      metadata:
        name: cluster
        namespace: openshift-machine-config-operator
      spec:
      # ...
        managedBootImages: 
      1
      
          machineManagers:
          - apiGroup: machine.openshift.io 
      2
      
            resource: machinesets 
      3
      
            selection:
              mode: All 
      4
      Copy to Clipboard Toggle word wrap
      1
      配置引导镜像管理功能。
      2
      指定 API 组。这必须是 machine.openshift.io
      3
      指定指定 API 组中的资源以应用更改。这必须是 machinesets
      4
      指定为集群中的所有机器集启用该功能。
    • 可选:为特定机器集启用引导镜像管理功能:

      apiVersion: operator.openshift.io/v1
      kind: MachineConfiguration
      metadata:
        name: cluster
        namespace: openshift-machine-config-operator
      spec:
      # ...
        managedBootImages: 
      1
      
          machineManagers:
          - apiGroup: machine.openshift.io 
      2
      
            resource: machinesets 
      3
      
            selection:
              mode: Partial 
      4
      
              partial:
                machineResourceSelector:
                  matchLabels:
                    region: "east"
      Copy to Clipboard Toggle word wrap
      1
      配置引导镜像更新功能。
      2
      指定 API 组。这必须是 machine.openshift.io
      3
      指定指定 API 组中的资源以应用更改。这必须是 machinesets
      4
      指定为带有指定标签的机器集启用该功能。
      提示

      如果机器集中没有适当的标签,请运行以下命令来添加键值对:

      $ oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a region="east" -n openshift-machine-api
      Copy to Clipboard Toggle word wrap

验证

  • 通过查看机器配置对象来查看引导镜像管理功能的当前状态:

    $ oc get machineconfiguration cluster -o yaml
    Copy to Clipboard Toggle word wrap

    使用引导镜像引用的机器集示例

    kind: MachineConfiguration
    metadata:
      name: cluster
    # ...
    status:
      conditions:
      - lastTransitionTime: "2025-05-01T20:11:49Z"
        message: Reconciled 2 of 4 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets
          | Reconciled 0 of 0 CAPI MachineDeployments
        reason: BootImageUpdateConfigurationUpdated
        status: "True"
        type: BootImageUpdateProgressing
      - lastTransitionTime: "2025-05-01T19:30:13Z"
        message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments
        reason: BootImageUpdateConfigurationUpdated
        status: "False"
        type: BootImageUpdateDegraded
      managedBootImagesStatus:
        machineManagers:
        - apiGroup: machine.openshift.io
          resource: machinesets
          selection:
            mode: All
    Copy to Clipboard Toggle word wrap

  • 运行以下命令来获取引导镜像版本。根据具体的平台,机器集中的引导镜像的位置和格式可能会有所不同。但是,引导镜像总是列在 spec.template.spec.providerSpec. 参数中。

    $ oc get machinesets <machineset_name> -n openshift-machine-api -o yaml
    Copy to Clipboard Toggle word wrap

    使用引导镜像引用的机器集示例

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: ci-ln-77hmkpt-72292-d4pxp
        update-boot-image: "true"
      name: ci-ln-77hmkpt-72292-d4pxp-worker-a
      namespace: openshift-machine-api
    spec:
    # ...
      template:
    # ...
        spec:
    # ...
          providerSpec:
    # ...
            value:
              disks:
              - autoDelete: true
                boot: true
                image: projects/rhcos-cloud/global/images/<boot_image> 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    此引导镜像与当前的 OpenShift Container Platform 版本相同。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat