- OpenShift在企業中的實踐:PaaS DevOps微服務(第2版)
- 魏新宇 郭躍軍
- 835字
- 2021-11-05 10:17:20
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節點擴容也就完成了。
- JavaScript前端開發模塊化教程
- Mastering NetBeans
- The Supervised Learning Workshop
- Vue.js 3.0源碼解析(微課視頻版)
- GitLab Repository Management
- 游戲程序設計教程
- 名師講壇:Java微服務架構實戰(SpringBoot+SpringCloud+Docker+RabbitMQ)
- Python機器學習經典實例
- Spring Boot進階:原理、實戰與面試題分析
- .NET 3.5編程
- 焊接機器人系統操作、編程與維護
- Linux Shell核心編程指南
- Python數據可視化之美:專業圖表繪制指南(全彩)
- Learning VMware vSphere
- C++ System Programming Cookbook