第 5 章 更新了引导镜像


Machine Config Operator (MCO)使用引导镜像来启动 Red Hat Enterprise Linux CoreOS (RHCOS) 节点。默认情况下,OpenShift Container Platform 不管理引导镜像。

这意味着集群中的引导镜像不会随集群一起更新。例如,如果您的集群最初使用 OpenShift Container Platform 4.12 创建,集群用来创建节点的引导镜像是相同的 4.12 版本,即使集群是更新的版本。如果以后将集群升级到 4.13 或更高版本,新节点将继续使用相同的 4.12 镜像扩展。

这个过程可能会导致以下问题:

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

要避免这些问题,您可以将集群配置为在更新集群时更新引导镜像。通过修改 MachineConfiguration 对象,您可以启用此功能。目前,更新引导镜像的功能仅适用于 Google Cloud Platform (GCP) 集群,并作为 Amazon Web Services (AWS) 集群的技术预览功能。由 Cluster CAPI Operator 管理的集群不支持它。

重要

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

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

如果您没有在机器集中使用名为 worker-user-data 的默认用户数据 secret,或者修改了 worker-user-data secret,则不应使用受管引导镜像更新。这是因为 Machine Config Operator (MCO) 更新机器集以使用 secret 的受管版本。通过使用受管引导镜像功能,您可以放弃自定义存储在机器集对象中的 secret 的功能。

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

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

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
# ...

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

如果您将集群配置为更新引导镜像,机器集中引用的引导镜像与集群的当前版本匹配。

5.1. 配置更新的引导镜像

默认情况下,OpenShift Container Platform 不管理引导镜像。您可以通过修改 MachineConfiguration 对象,将集群配置为在更新集群时更新引导镜像。

目前,更新引导镜像的功能仅适用于 Google Cloud Platform (GCP) 集群,并作为 Amazon Web Services (AWS) 集群的技术预览功能。由 Cluster CAPI Operator 管理的集群不支持它。

重要

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

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

流程

  1. 运行以下命令,编辑名为 clusterMachineConfiguration 对象,以启用引导镜像的更新:

    $ oc edit MachineConfiguration cluster
    • 可选:为所有机器集配置引导镜像更新功能:

      apiVersion: operator.openshift.io/v1
      kind: MachineConfiguration
      metadata:
        name: cluster
        namespace: openshift-machine-config-operator
      spec:
      # ...
        managedBootImages: 1
          machineManagers:
          - resource: machinesets
            apiGroup: machine.openshift.io
            selection:
              mode: All 2
      1
      激活引导镜像更新功能。
      2
      指定集群中的所有机器集都会被更新。
    • 可选:为特定机器集配置引导镜像更新功能:

      apiVersion: operator.openshift.io/v1
      kind: MachineConfiguration
      metadata:
        name: cluster
        namespace: openshift-machine-config-operator
      spec:
      # ...
        managedBootImages: 1
          machineManagers:
          - resource: machinesets
            apiGroup: machine.openshift.io
            selection:
              mode: Partial
              partial:
                machineResourceSelector:
                  matchLabels:
                    update-boot-image: "true" 2
      1
      激活引导镜像更新功能。
      2
      指定具有此标签的任何机器集都会被更新。
      提示

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

      $ oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a update-boot-image=true -n openshift-machine-api

验证

  1. 通过查看机器配置对象来查看引导镜像更新的当前状态:

    $ oc get machineconfiguration cluster -n openshift-machine-api -o yaml

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

    kind: MachineConfiguration
    metadata:
      name: cluster
    # ...
    status:
      conditions:
      - lastTransitionTime: "2024-09-09T13:51:37Z" 1
        message: Reconciled 1 of 2 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets
          | Reconciled 0 of 0 CAPI MachineDeployments
        reason: BootImageUpdateConfigurationAdded
        status: "True"
        type: BootImageUpdateProgressing
      - lastTransitionTime: "2024-09-09T13:51:37Z" 2
        message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments
        reason: BootImageUpdateConfigurationAdded
        status: "False"
        type: BootImageUpdateDegraded

    1
    引导镜像更新的状态。目前,引导镜像更新不支持 Cluster CAPI Operator 机器集和机器部署。
    2
    指明任何引导镜像是否更新失败。如果有任何更新失败,Machine Config Operator 会降级。在这种情况下,可能需要手动干预。
  2. 运行以下命令来获取引导镜像版本:

    $ oc get machinesets <machineset_name> -n openshift-machine-api -o yaml

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

    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/rhcos-416-92-202402201450-0-gcp-x86-64 1
    # ...

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.