更新使用 OpenShift Data Foundation 的標準工作者節點
經典基礎設施
對於採用儲存解決方案(例如 OpenShift Data Foundation)的經典叢集,您必須依序對每個工作節點執行隔離、排空及替換操作。 若您將 OpenShift Data Foundation 部署至叢集中的部分工作節點,則在替換工作節點後,必須編輯資源 ocscluster 以包含新工作節點。
下列指導教學涵蓋主要及次要工作者節點更新項目。
- 重大更新
- 使用此標籤完成步驟以套用主要更新,例如,如果您要將工作者節點更新至新的主要版本,例如從
4.11更新至4.12,以及將 OpenShift Data Foundation 從4.11更新至4.12。 - 小幅更新
- 使用此標籤完成步驟以套用修補程式更新,例如,如果您要從
4.12.15_1542_openshift更新至4.12.16_1544_openshift,同時保留 OpenShift Data Foundation4.12版。
在升級過程中跳過版本(例如從 4.8 升級至 )是不 4.12 被支援的。
請登入您的帳戶。 適用的話,請將適當的資源群組設為目標。 設定叢集的環境定義。
在更新工作者節點之前,請確保備份應用程式資料。 此外,計劃一次針對一個工作者節點完成下列步驟。 請針對您要更新的每個工作節點,重複上述步驟。
更新叢集主節點
重大更新
- 如果您要將工作者節點更新為新的主要版本 (例如從
4.11到4.12),請先更新叢集主節點。
範例指令:ibmcloud oc cluster master update --cluster CLUSTER [--version MAJOR.MINOR.PATCH] [--force-update] [-f] [-q]ibmcloud oc cluster master update --cluster mycluster --version 4.21.27 --force-update - 請等待主要更新完成。
決定您要更新哪些工作者節點
重大更新 次要更新
-
使用
oc get nodes指令並決定您要更新哪些工作者節點,以列出您的工作者節點。oc get nodes輸出範例
NAME STATUS ROLES AGE VERSION 10.241.0.4 Ready master,worker 106s v1.21.6+4b61f94 10.241.128.4 Ready master,worker 22d v1.21.6+bb8d50a 10.241.64.4 Ready master,worker 22d v1.21.6+bb8d50a
縮減 OpenShift Data Foundation
重大更新 次要更新
- 針對您在前一個步驟中找到的每一個工作者節點,尋找
rook-ceph-mon及rook-ceph-osd部署。oc get pods -n openshift-storage -o wide | grep -i <node_name> - 縮減您在前一個步驟中找到的部署。
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storageoc scale deployment rook-ceph-osd-2 --replicas=0 -n openshift-storageoc scale deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME --replicas=0 -n openshift-storage
封鎖並排除工作者節點
重大更新 次要更新
-
封鎖節點。 封鎖節點可防止在此節點上排定任何 Pod。
oc adm cordon NODE_NAME輸出範例
node/10.241.0.4 cordoned -
排除節點以移除所有 Pod。 當您排除工作者節點時,Pod 會移至其他工作者節點,確保沒有關閉時間。 排除也可確保 Pod 中斷預算不會中斷。
oc adm drain NODE_NAME --force --delete-emptydir-data --ignore-daemonsets輸出範例
evicting pod "managed-storage-validation-webhooks-7fd79bc9f7-pdpv6" evicting pod "calico-kube-controllers-647dbbd685-fmrp9" evicting pod "certified-operators-2v852" evicting pod "csi-snapshot-controller-77fbf474df-47ddt" evicting pod "calico-typha-8574d89b8c-7f2cc" evicting pod "dns-operator-6d48cbff67-vrrsw" evicting pod "router-default-6fc798b98b-9m6kh" evicting pod "prometheus-adapter-5b77ffdd5f-hzqrp" evicting pod "alertmanager-main-1" evicting pod "prometheus-k8s-0" evicting pod "network-check-source-66c7fbb86-2r78z" -
等待排除完成,然後完成下列步驟以取代工作者節點。
更新工作者節點
重大更新 次要更新
-
使用
ibmcloud oc worker ls來列出工作者節點,並尋找您在前一個步驟中所隔離及排除的工作者節點。ibmcloud oc worker ls -c CLUSTER輸出範例
ID Primary IP Flavor State Status Zone Version kube-c85ra07w091uv4nid9ug-vpcoc-default-000001c1 10.241.128.4 bx2.4x16 normal Ready us-east-3 4.8.29_1544_openshift* kube-c85ra07w091uv4nid9ug-vpcoc-default-00000288 10.241.0.4 bx2.4x16 normal Ready us-east-1 4.8.29_1544_openshift* kube-c85ra07w091uv4nid9ug-vpcoc-default-00000352 10.241.64.4 bx2.4x16 normal Ready us-east-2 4.8.29_1544_openshift* -
更新工作者節點。
ibmcloud oc worker update -c CLUSTER --worker kube-***輸出範例
The replacement worker node is created in the same zone with the same flavor, but gets new public or private IP addresses. During the replacement, all pods might be rescheduled onto other worker nodes and data is deleted if not stored outside the pod. To avoid downtime, ensure that you have enough worker nodes to handle your workload while the selected worker nodes are being replaced. Replace worker node kube-c85ra07w091uv4nid9ug-cluster-default-00000288? [y/N]> y Deleting worker node kube-c85ra07w091uv4nid9ug-cluster-default-00000288 and creating a new worker node in cluster -
等待佈建取代節點,然後列出您的工作者節點。 請注意,此程序可能需要 20 分鐘以上。
oc get nodes輸出範例
NAME STATUS ROLES AGE VERSION 10.241.0.4 Ready master,worker 22d v1.21.6+bb8d50a 10.241.128.4 Ready master,worker 22d v1.21.6+bb8d50a 10.241.64.4 Ready master,worker 22d v1.21.6+bb8d50a
從舊節點清除資源
重大更新 次要更新
-
導覽至
openshift-storage專案。oc project openshift-storage -
從叢集中移除失敗的 OSD。 必要的話,您可以指定多個失敗的 OSD:
oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -FAILED_osd_id值是 Pod 名稱中緊接在rook-ceph-osd字首之後的整數。 在只有三個 OSD 的叢集中,或在移除 OSD 之後,空間不足無法還原所有三個資料抄本的叢集中,FORCE_OSD_REMOVAL值必須變更為true。 -
透過檢查 ocs-osd-removation-job Pod 的狀態,驗證已順利移除 OSD。
oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage -
驗證 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'輸出範例
2023-03-10 06:50:04.501511 I | cephosd: completed removal of OSD 0 -
從舊節點識別與持續性磁區要求 (PVC) 相關聯的持續性磁區 (PV):
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released如果有 PV 處於「已發行」狀態,請刪除它:
oc delete pv <persistent_volume>
新增儲存節點
重大更新 次要更新
- 等待 OpenShift Data Foundation Pod 部署至新的工作者節點。 驗證已建立 OSD 持續性磁區,且所有 Pod 都處於
Running狀態。oc get pv oc get ocscluster oc get pods -n openshift-storage - 驗證所有其他必要的 OpenShift Data Foundation Pod 都處於「執行中」狀態。
輸出範例:oc get pod -n openshift-storage | grep monrook-ceph-mon-a-cd575c89b-b6k66 2/2 Running 0 38m rook-ceph-mon-b-6776bc469b-tzzt8 2/2 Running 0 38m rook-ceph-mon-d-5ff5d488b5-7v8xh 2/2 Running 0 4m8s - 驗證新的 OSD Pod 是否在替換用節點上執行:
oc get pods -o wide -n openshift-storage| egrep -i <new_node_name> | egrep osd - 識別
crashcollectorPod 部署。oc get deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage - 如果有現有的
crashcollector部署,請刪除它。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage - 刪除 ocs-osd-removal-job。
輸出範例:oc delete -n openshift-storage job ocs-osd-removal-jobjob.batch "ocs-osd-removal-job" deleted
更新 OpenShift Data Foundation 附加程式
重大更新
- 請檢查現有版本。
ibmcloud oc cluster addon ls --cluster CLUSTER - 更新附加程式。
ibmcloud oc cluster addon update openshift-data-foundation --cluster CLUSTER --version VERSION - 驗證附加程式已更新。
ibmcloud oc cluster addon ls --cluster CLUSTER
更新叢集資源
重大更新
-
取得
ocscluster資源的名稱。oc get ocscluster輸出範例
NAME AGE ocscluster-vpc 19d -
執行下列指令,以編輯
ocscluster資源。oc edit ocscluster OCS-CLUSTER-NAME -
將
ocsUpgrade參數設定為true。... spec: billingType: hourly monSize: 20Gi autoDiscoverDevices: true numOfOsd: 1 ocsUpgrade: true osdSize: 250Gi status: storageClusterStatus: Decreasing the capacity not allowed -
儲存並關閉檔案。
-
請等待更新完成。
-
驗證
storagecluster和cephcluster資源都已正確部署。oc get storagecluster -n openshift-storage NAME AGE PHASE EXTERNAL CREATED AT VERSION ocs-storagecluster 43h Ready 2023-06-21T09:22:00Z 4.11.0oc get cephcluster -n openshift-storage NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL ocs-storagecluster-cephcluster /var/lib/rook 3 43h Ready Cluster created successfully HEALTH_OKoc get csv -n openshift-storage NAME DISPLAY VERSION REPLACES PHASE mcg-operator.v4.11.8 NooBaa Operator 4.11.8 mcg-operator.v4.11.7 Succeeded ocs-operator.v4.11.8 OpenShift Container Storage 4.11.8 ocs-operator.v4.11.7 Succeeded odf-csi-addons-operator.v4.11.8 CSI Addons 4.11.8 odf-csi-addons-operator.v4.11.7 Succeeded odf-operator.v4.11.8 OpenShift Data Foundation 4.11.8 odf-operator.v4.11.7 Succeeded