
3.3 OpenShift的Worker节点扩容
OpenShift通过IPI和UPI安装后,Worker节点扩容的方式有所区别。IPI的Worker节点扩容是通过修改Machine Set的副本数,由Machine API自动完成的。IPI的扩容操作和范例请参照图3-50二维码中的文章,我们不再过多阐述。

图3-50 通过Machine API自动完成节点的扩容
我们主要介绍通过UPI安装OpenShift集群后的Worker节点的扩容。扩容的步骤如下:
·将新的Worker节点的域名和IP地址信息加入DNS、前端负载均衡器。
·使用新的TLS证书更新Worker Ignition文件。如果Worker节点扩容在OpenShift集群安装完毕24小时内,无须更新Worker Ignition文件中的证书。从OpenShift 4.5开始,即使在集群安装完毕24小时后增加Worker节点,也不用更新证书。但4.5之前的版本,如果在集群安装完毕24小时后增加Worker节点,则需要更新证书。
·通过RHCOS的ISO文件引导主机/虚拟机启动,在启动界面上输入参数,读取Worker Ignition文件开始安装。
·手工批准CSR,以便Worker节点加入集群。
针对OCP4.5之前的版本在集群安装完毕24小时后增加Worker节点的情况,首先查看Ignition Worker文件,然后检查内嵌的证书,命令执行结果如图3-51所示,这段证书是后续要替换的内容。
# cd /var/www/html/materials/pre-install/
拷贝图3-51中方框标识base64后的一长串数值。
使用openssl命令检查x509证书的创建时间。我们看到证书创建时间距现在已经超过24小时,因此需要更新TLS,如图3-52所示。
# echo "LS0…" | base64 -d | openssl x509 -noout -text

图3-51 Worker Ignition中的证书

图3-52 查看证书过期时间
从Machine Config Server的22623监听端口获取最新的TLS证书。
# openssl s_client -connect api-int.ocp4.example.com:22623 -showcerts
将输出结果中BEGIN CERTIFICATE和END CERTIFICATE之间的内容粘贴出来,存放到api-int.pem文件中。
使用带有--wrap=0选项的base64对证书进行编码。
# base64 --wrap=0 ./api-int.pem 1> ./api.int.base64
用输出结果替换worker.ign中ignition.security.tls.certificateAuthorities[0].source的数值。
由于上述命令行较长,我们建议使用如下脚本自动化完成worker.ign文件证书的替换工作,将clusterDomain替换为自己集群的域名。
# export MCS=api-int.<clusterDomain>:22623 # echo "q" | openssl s_client -connect $MCS -showcerts | awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/' | base64 --wrap=0 | tee ./ api-int.base64 && \ sed --regexp-extended --in-place=.backup "s%base64,[^,]+%base64,$(cat ./api-int. base64)\"%" ./worker.ign
接下来,按照3.2.3节第11小节展示的安装步骤,使用RHCOS的ISO创建新的物理机或者虚拟机,输入Worker节点启动参数(正确的主机名、IP地址)即可进行节点扩容。扩容过程中随时关注CSR,当有Pending状态的CSR出现后,手工使用如下命令行批准即可。
# oc get csr -o json | jq -r '.items[] | select(.status == {} ) | .metadata.name' | xargs oc adm certificate approve
批准完毕后,Worker节点扩容也就完成了。