OpenShift在企业中的实践:PaaS DevOps微服务(第2版)
上QQ阅读APP看书,第一时间看更新

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节点工作是否正常。

·生产环境升级之前,建议将升级版本在版本相同的非生产环境进行演练。