OpenShift 4 - 用 Control Plane Only 升级 (即 EUS - EUS 升级) 方法加速跨小版本升级 OpenShift
《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.18环境中验证
什么是 Control Plane Only 升级 (即 EUS - EUS升级)
EUS(Extended Update Support)是在产品标准生命周期之后红帽提供的一种扩展订阅服务。通过购买单独的 EUS 订阅,用户可以获得更长的产品生命周期服务。OpenShift 的 EUS 通常对应的是小版本为偶数的版本,例如下图的 4.14、4.16、4.18。
从 OpenShift 4.8 开始 OpenShift 开始支持 Control Plane Only 升级(该功能早期被称为 EUS - EUS升级)。Control Plane Only 升级是一种在相邻 OpenShift EUS 版本之间升级集群的方法。使用 Control Plane Only 升级功能将 OpenShift 从 4.14 升级到 4.16 的过程大致如下:
- 将 Worker Node 的 MachineConfigPools 设为暂停升级。
- 先将 Control Plane 节点从 4.14 升级到 4.15
- 再将 Control Plane 节点从 4.15 升级到 4.16
- 取消 Worker Node 的 MachineConfigPools 的暂停升级,。此后 Worker 节点会自动从 4.14 跳过 4.15,一次性升级到 4.16。

和标准升级过程相比,上述从 4.14 到 4.16 的 Control Plane Only 升级过程中 Operator 相关容器需要进行 2 次升级,Control Plane 节点的 RHCOS 需要 2 次重启,这两步和标准升级过程是一样的,而 Worker 节点的 RHCOS 只需一次重启即可。由于 Worker 节点的升级步骤可减少一半,因此可有效减少 OpenShift 集群整体升级的用时。
使用 Control Plane Only 升级 OpenShift 集群
以下以一个在线 OpenShift 4.18 集群为例说明如何通过 Control Plane Only 过程将该集群升级到 4.20。
- 查看当前的 MachineConfigPool。
$ oc get mcp
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE
master rendered-master-38790513d02cb91cff465084a276d6bf True False False 3 3 3 0 3h29m
worker rendered-worker-e2487587bf2027bfeb92f69ebcc512cb True False False 2 2 2 0 3h29m
- 将 worker 的 MachineConfigPool 改为暂停升级。
$ oc patch mcp/worker --type merge --patch '{"spec":{"paused":true}}'
- 将集群的升级渠道到设为 eus-4.20。
$ oc adm upgrade channel eus-4.20
- 升级 Control Plane 到最新版,注意返回提示升级到的版本。
$ oc adm upgrade --to-latest
Requested update to 4.19.21
- 在升级完 Control Plane 后查看集群版本。
$ oc adm upgrade
Cluster version is 4.19.21
Upstream is unset, so the cluster will use an appropriate default.
Channel: candidate-4.20 (available channels: candidate-4.19, candidate-4.20)
No updates available. You may still upgrade to a specific release image with --to-image or wait for new updates to be available.
- 再次对 Control Plane 进行升级。
$ oc adm upgrade --to-latest
- 完成后将 Worker 的 MachineConfigPool 改回为可升级状态,设置完后 Worker 节点会自动开始升级。
$ oc patch mcp/worker --type merge --patch '{"spec":{"paused":false}}'
- 最后检查集群版本,以及 Control Plane 和 Worker 的状态。
$ oc get clusterversion
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS
version 4.20.8 True False 28m Cluster version is 4.20.8
$ oc get mcp
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE
master rendered-master-03da27790298727bb5cbba4588c64c97 True False False 3 3 3 0 8h
worker rendered-worker-519c982845f7ebcf7ca6ed25ee5b8af5 True False False 2 2 2 0 8h
参考
https://www.redhat.com/en/blog/catching-up-quickly-with-eus-to-eus-updates
https://www.redhat.com/en/blog/announcing-additional-extended-update-support-openshift-414-and-beyond
https://access.redhat.com/support/policy/updates/openshift-eus
https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/updating_clusters/performing-a-cluster-update#control-plane-only-update
https://access.redhat.com/labs/ocpupgradegraph/update_path/
https://access.redhat.com/articles/7098872
https://shanna-chan.blog/2023/04/24/openshift-extended-update-support-eus/
https://pronteff.com/staying-up-to-date-with-eus-to-eus-updates/
https://kubernetes.io/zh-cn/releases/version-skew-policy/
更多推荐


所有评论(0)