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

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节点扩容也就完成了。