第 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)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
流程
运行以下命令,编辑名为
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 版本相同。
其他资源