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 的过程大致如下:

  1. 将 Worker Node 的 MachineConfigPools 设为暂停升级。
  2. 先将 Control Plane 节点从 4.14 升级到 4.15
  3. 再将 Control Plane 节点从 4.15 升级到 4.16
  4. 取消 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。

  1. 查看当前的 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
  1. 将 worker 的 MachineConfigPool 改为暂停升级。
$ oc patch mcp/worker --type merge --patch '{"spec":{"paused":true}}'
  1. 将集群的升级渠道到设为 eus-4.20。
$ oc adm upgrade channel eus-4.20
  1. 升级 Control Plane 到最新版,注意返回提示升级到的版本。
$ oc adm upgrade --to-latest
Requested update to 4.19.21
  1. 在升级完 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.
  1. 再次对 Control Plane 进行升级。
$ oc adm upgrade --to-latest
  1. 完成后将 Worker 的 MachineConfigPool 改回为可升级状态,设置完后 Worker 节点会自动开始升级。
$ oc patch mcp/worker --type merge --patch '{"spec":{"paused":false}}'
  1. 最后检查集群版本,以及 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/

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐