6.10. 引导镜像管理
对于 Google Cloud 和 Amazon Web Services (AWS) 集群,默认情况下,Machine Config Operator (MCO) 管理和更新用于扩展节点的引导镜像。这意味着,每当您升级集群时,MCO 会默认更新引导镜像。
对于 VMware vSphere,您可以启用引导镜像管理,它是一个技术预览功能。
对于所有其他平台,MCO 不使用每个集群更新更新引导镜像。
vSphere 上的引导镜像管理只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
6.10.1. 关于引导镜像管理 复制链接链接已复制到粘贴板!
默认情况下,对于 Google Cloud 和 Amazon Web Services (AWS)集群,Machine Config Operator (MCO)会在更新集群时更新集群中的机器集中的引导镜像。
对于 VMware vSphere,您可以启用引导镜像管理,它是一个技术预览功能。有关如何启用此功能的详情,请参考"启用引导镜像管理"。
vSphere 上的引导镜像管理只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
如果需要,您可以禁用引导镜像管理功能。当禁用该功能时,引导镜像不再会与集群进行更新。例如,如果禁用了这个功能,如果您的集群最初使用 OpenShift Container Platform 4.16 创建,MCO 用于创建节点的引导镜像是相同的 4.16 版本,即使您的集群是更新的版本。
但是,使用旧的引导镜像可能会导致以下问题:
- 启动节点的额外时间
- 证书过期问题
- 版本偏移问题
有关如何禁用此功能的详情,请参考"禁用引导镜像管理"。如果禁用此功能,您可以随时重新启用该功能。如需更多信息,请参阅"启用引导镜像管理"。
配置引导镜像管理的功能仅适用于 Google Cloud 和 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 版本。
因为只有在扩展节点时才使用引导镜像,所以此功能不会影响现有节点。
要查看集群中使用的当前引导镜像,请根据您的平台使用以下方法之一:
对于 Google Cloud 和 AWS,您可以检查机器集。
注意根据具体的平台,机器集中的引导镜像的位置和格式可能会有所不同。但是,引导镜像总是列在
spec.template.spec.providerSpec.参数中。使用引导镜像引用的 Google Cloud 机器集示例
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-641 # ...- 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 # ...对于 VMware vSphere,通过打开到节点的
oc debug会话并使用rpm-ostree status命令来检查受影响的节点。sh-5.1# rpm-ostree status带有引导镜像引用的 AWS 节点示例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
如果要启用引导镜像管理的任何机器集使用基于 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 命令的输出中。您可以使用以下常规步骤来更正问题:
- 禁用引导镜像管理功能。如需更多信息,请参阅"禁用引导镜像管理"。
-
手动更新
*-user-datasecret,以使用 Ignition 版本到 3.2.0。 - 启用引导镜像管理功能。如需更多信息,请参阅"启用引导镜像管理"。
6.10.2. 禁用引导镜像管理 复制链接链接已复制到粘贴板!
默认情况下,对于 Google Cloud 和 Amazon Web Services (AWS) 集群,Machine Config Operator (MCO) 会在更新集群时管理并更新集群中机器集中的引导镜像。对于 VMware vSphere,您可以启用引导镜像管理,它是一个技术预览功能。
您可以通过编辑 MachineConfiguration 对象来禁用集群的引导镜像管理功能。禁用后,Machine Config Operator (MCO) 不再管理集群中的引导镜像,不再使用每个集群更新来更新引导镜像。
禁用这个功能不会将节点或机器集回滚到原始安装的引导镜像。机器集会保留禁用该功能时出现的引导镜像版本,如果集群在以后升级到新的 OpenShift Container Platform 版本,则不会更新。此功能对现有节点没有影响。
禁用该功能后,您可以随时重新启用该功能。如需更多信息,请参阅"启用更新的引导镜像"。
流程
编辑
MachineConfiguration对象,为某些或所有机器集禁用引导镜像管理功能:$ oc edit MachineConfiguration cluster可选:禁用所有机器集的功能:
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:1 machineManagers: - apiGroup: machine.openshift.io2 resource: machinesets3 selection: mode: None4
验证
当受影响的节点返回
READY状态时,通过查看机器配置对象来查看引导镜像管理功能的当前状态:$ oc get machineconfiguration cluster -o yaml使用引导镜像引用的机器集示例
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当受影响的节点返回到
READY状态时,使用以下方法之一检查当前的引导镜像:对于 Google Cloud 和 AWS,运行以下命令来获取引导镜像版本。根据具体的平台,机器集中的引导镜像的位置和格式可能会有所不同。但是,引导镜像总是列在
spec.template.spec.providerSpec.参数中。$ 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/<boot_image>1 # ...- 1
- 此引导镜像与当前的 OpenShift Container Platform 版本相同。
对于 VMware vSphere,从受影响的节点获取引导镜像版本:
运行以下命令,打开到节点的
oc debug会话:$ oc debug node/<node_name>运行以下命令,将
/host设置为 debug shell 中的根目录:sh-5.1# chroot /host运行
rpm-ostree status命令,以查看自定义分层镜像正在使用:sh-5.1# rpm-ostree status输出示例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
6.10.3. 启用引导镜像管理 复制链接链接已复制到粘贴板!
默认情况下,对于 Google Cloud 和 Amazon Web Services (AWS)集群,Machine Config Operator (MCO)会在更新集群时更新集群中的机器集中的引导镜像。
如果您禁用了引导镜像管理功能,导致引导镜像没有更新,您可以通过编辑 MachineConfiguration 对象来重新启用该功能。
对于 VMware vSphere,您可以启用引导镜像管理,它是一个技术预览功能。
vSphere 上的引导镜像管理只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
启用该功能将引导镜像更新至当前的 OpenShift Container Platform 版本。如果以后集群再次更新至新的 OpenShift Container Platform 版本,则会再次更新引导镜像。启用功能后创建的新节点使用更新的引导镜像。此功能对现有节点没有影响。
先决条件
对于 vSphere,在集群中启用
TechPreviewNoUpgrade功能集。如需更多信息,请参阅“使用功能门启用功能”。注意启用
TechPreviewNoUpgrade功能集将无法撤消,并防止次版本更新。不建议在生产环境集群中使用这些功能集。等待
managedBootImagesStatus小节显示在MachineConfiguration对象中。apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster # ... status: # ... managedBootImagesStatus: machineManagers: - apiGroup: machine.openshift.io resource: machinesets selection: mode: None
流程
编辑名为
cluster的MachineConfiguration对象,为某些或所有机器集启用引导镜像管理功能:$ oc edit MachineConfiguration cluster可选:为所有机器集启用引导镜像管理功能:
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:1 machineManagers: - apiGroup: machine.openshift.io2 resource: machinesets3 selection: mode: All4 可选:为特定机器集启用引导镜像管理功能:
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:1 machineManagers: - apiGroup: machine.openshift.io2 resource: machinesets3 selection: mode: Partial4 partial: machineResourceSelector: matchLabels: region: "east"提示如果机器集中没有适当的标签,请运行以下命令来添加键值对:
$ oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a region="east" -n openshift-machine-api
验证
当受影响的节点返回
READY状态时,通过查看机器配置对象来查看引导镜像管理功能的当前状态:$ oc get machineconfiguration cluster -o yaml使用引导镜像引用的机器集示例
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当受影响的节点返回到
READY状态时,使用以下方法之一检查当前的引导镜像:对于 Google Cloud 和 AWS,运行以下命令来获取引导镜像版本。根据具体的平台,机器集中的引导镜像的位置和格式可能会有所不同。但是,引导镜像总是列在
spec.template.spec.providerSpec.参数中。$ 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/<boot_image>1 # ...- 1
- 此引导镜像与当前的 OpenShift Container Platform 版本相同。
对于 VMware vSphere,从受影响的节点获取引导镜像版本:
运行以下命令,打开到节点的
oc debug会话:$ oc debug node/<node_name>运行以下命令,将
/host设置为 debug shell 中的根目录:sh-5.1# chroot /host运行
rpm-ostree status命令,以查看自定义分层镜像正在使用:sh-5.1# rpm-ostree status输出示例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...