OCP4升级方便不?

方便,飞一样的感觉。


会升级失败不。

注意两个点,就不会从天上掉下来。


注意点1:升级OCP之前,需要查看升级路径,比如,想升级到OCP 4.5.3的版本,先查一下升级路径,也就是说,从哪个版本的OCP可以升级到OCP 4.5.3,千万别跳着来。


我们查看OCP 4.5.3的升级路径:

ansible localhost -m lineinfile -a 'path=$HOME/.bashrc regexp="^export PRODUCT_REPO" line="export PRODUCT_REPO=openshift-release-dev"' 

 ansible localhost -m lineinfile -a 'path=$HOME/.bashrc regexp="^export RELEASE_NAME" line="export RELEASE_NAME=ocp-release"' 

 ansible localhost -m lineinfile -a 'path=$HOME/.bashrc regexp="^export ARCHITECTURE" line="export ARCHITECTURE=x86_64"' 

$source $HOME/.bashrc



$ oc adm release info -a ${LOCAL_SECRET_JSON} "quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}" | head -n 18


大魏填坑记@OpenShift升级_java

从输出结果我们可以看到,从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版本,以此类推,就可以了。


$ansible localhost -m lineinfile -a 'path=$HOME/.bashrc regexp="^export OCP_RELEASE" line="export OCP_RELEASE=4.4.10"' 


 source $HOME/.bashrc

[xiwei-redhat.com@bastion ~]$ oc adm release info -a ${LOCAL_SECRET_JSON} "quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}" | head -n 18

我们看到从4.4.8可以直接升级到4.4.10,然后再从4.4.10升级到4.5.3。一共需要升级两次!


升级是否成功的判断标准,不仅仅是是oc get co看co是否都到新版本,oc get clusterversion升级进度是否完成,还需要看mcp的状态是否都升级成功:

如下图所示:UPDATED应为True、UPDATING应为False、DEGRADED应为False


如果升级完,MCP装填不对,那就埋下了一颗雷,需要排雷。


注意点2:

大多数OCP的升级失败,都是因为MCP的状态不对。


MCP为啥状态不对呢?

大多数是和MCO有关:

1.未通过MCO修改RHCOS的配置,造成MCP验证配置时,与RHCOS本地配置比对,一致性校验无法通过。

2.通过MCO下发配置,但没成功。


因此:

一定不要手工修改RHCOS的配置;

MCO配置下发失败,要把问题找出来,还原配置。


配置不能更新会引发mcp degrade。这时候OCP升级是不会成功的。


着急升级怎么办?


我们可以可以强制验MCP证成功。但需要注意的是,强制验证成功只会将问题推迟到下一次升级,因此需要通过更改MC来解决此问题。


具体做法:在降级的MCP对应的具体OCP节点上,执行如下命令:

[root@openshift-worker-2 ~]# touch /run/machine-config-daemon-force

重启节点,让配置更新完成,mcp状态才会变成正常的(如果touch完毕后,重启节点MCP问题未解决,可以需要多来几次)。


MCP变成正常后,可以进行升级,升级完毕后,把文件删除:

[root@openshift-worker-2 ~]# rm -f /run/machine-config-daemon-force

如果想查mcp降级的原因,可以查看mco的日志,通常会提示哪些文件不一致:

大魏填坑记@OpenShift升级_java_02