
3.4.3 OpenShift的离线升级
从上一小节可以看到OpenShift的在线升级很方便,但很多客户的数据中心是无法连接外网的,因此只能进行离线升级。离线升级的示意图如图3-60所示。

图3-60 离线升级的示意图
在离线升级中,我们无法从OpenShift UI中获取升级通道信息。我们有两种方法确认升级路径:
1)访问网站https://ctron.github.io/openshift-update-graph,可以清晰查看各个版本的升级路径。
2)通过命令行获取。
由于很多时候需要用命令行进行运维,因此我们主要介绍第二种方法。在第二种方法中,需要在另外一个有oc客户端的、可访问外网的系统中获取升级通道。首先设置环境变量:
#export LOCAL_REPOSITORY=ocp4/openshift4 #export LOCAL_SECRET_JSON=$HOME/ocp_pullsecret.json #export PRODUCT_REPO=openshift-release-dev #export RELEASE_NAME=ocp-release #export ARCHITECTURE=x86_64
如果想将离线环境的OpenShift升级到OCP 4.5.3的版本,可查一下升级路径,命令执行结果如图3-61所示。
#export OCP_RELEASE=4.5.3 # oc adm release info -a ${LOCAL_SECRET_JSON} "quay.io/${PRODUCT_REPO}/${RELEASE_ NAME}:${OCP_RELEASE}-${ARCHITECTURE}" | head -n 18

图3-61 查看OpenShift升级路径
从输出结果我们可以看到,从4.4.10,4.4.11,4.4.12,4.4.13,4.4.14,4.4.15,4.5.1,4.5.2这几个OCP版本,都能一步升级到4.5.3。如果我们现在的版本是4.4.8,不在升级到4.5.3的路径里,怎么办?
我们查看4.5.3的升级路径中,离4.4.8最近的是4.4.10,我们利用命令行,查看4.4.10 OCP版本的升级路径,命令执行结果如图3-62所示。
#export OCP_RELEASE=4.4.10 #oc adm release info -a ${LOCAL_SECRET_JSON} "quay.io/${PRODUCT_REPO}/${RELEASE_ NAME}:${OCP_RELEASE}-${ARCHITECTURE}" | head -n 18

图3-62 查看OpenShift升级路径
我们看到从4.4.8可以直接升级到4.4.10,然后再从4.4.10升级到4.5.3,一共需要升级两次。
离线升级需要提前将高版本的OpenShift安装镜像导入Mirror Registry中(导入方法参考3.2.3节)。然后通过如下命令行指定版本进行升级。
# oc adm upgrade --allow-explicit-upgrade --allow-upgrade-with-warnings=true --force=true --to-image=repo.apps.weixinyucluster.bluecat.ltd:5000/ocp4/ openshift4:4.4.10
这样,OpenShift就会使用Mirror Registry中的OpenShift 4.4.10镜像进行升级。在升级过程中,通过如下命令行监控升级进度。
# oc get clusterversion NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.4.8 True True 6d4h Working towards repo.apps. weixinyucluster.bluecat.ltd:5000/ocp4/openshift4:4.4.10: downloading update
当升级成功后,PROGRESSING状态会变为“False”,版本显示为4.4.10。
# oc get clusterversion NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.4.10 True False 22h Cluster version is 4.4.10
最后,通过oc get co命令,确保所有的Cluster Operator版本正确。通过oc get mcp确保所有的MachineConfig Pool状态正常、升级完成。
虽然OpenShift离线升级和在线升级都不复杂,但需要注意以下几点:
·生产环境升级要避免太过频繁,选择升级到长生命支持周期的OpenShift版本,如OpenShift 4.6版本。
·生产环境升级的版本一定要选择Stable Channel发布的版本(避免出现Bug)。
·生产环境升级之前需要查看OpenShift的升级路径,查看MachineConfig Pool的状态是否正常,查看现有Cluster Operator和OCP节点工作是否正常。
·生产环境升级之前,建议将升级版本在版本相同的非生产环境进行演练。