第 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
功能集。如需更多信息,请参阅附加资源部分中的"使用功能门启用功能"。
流程
运行以下命令,编辑名为
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: - resource: machinesets apiGroup: machine.openshift.io selection: mode: All 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
提示如果机器集中没有适当的标签,请运行以下命令来添加键/值对:
$ oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a update-boot-image=true -n openshift-machine-api
验证
通过查看机器配置对象来查看引导镜像更新的当前状态:
$ 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
运行以下命令来获取引导镜像版本:
$ 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 版本相同。
其他资源