第 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) 集群,且不支持由 Cluster API 管理的集群。

重要

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

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

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

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

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 对象,将集群配置为在更新集群时更新引导镜像。

先决条件

  • 已使用功能门启用 TechPreviewNoUpgrade 功能集。如需更多信息,请参阅附加资源部分中的"使用功能门启用功能"。

流程

  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.