OpenShift Data Foundation을 사용하는 Classic 워커 노드 업데이트
클래식 인프라
클래식 클러스터에서 Data OpenShift Foundation과 같은 스토리지 솔루션을 사용하는 경우 각 워커 노드를 순차적으로 격리, 드레인 및 교체해야 합니다. OpenShift Data Foundation을 클러스터에 있는 작업자 노드의 서브세트에 배치한 경우 작업자 노드를 대체한 후 새 작업자 노드를 포함하도록 ocscluster 리소스를 편집해야 합니다.
다음 튜토리얼에서는 주 작업자 노드 및 부 작업자 노드 업데이트를 모두 다룹니다.
- 주요 업데이트
- 이 레이블이 있는 단계를 완료하여 주요 업데이트를 적용하십시오. 예를 들어, 작업자 노드를 새 주요 버전 (예:
4.11에서4.12로, 그리고4.11에서4.12로 OpenShift Data Foundation) 으로 업데이트하는 경우입니다. - 소규모 업데이트
- 이 레이블이 있는 단계를 완료하여 패치 업데이트를 적용하십시오. 예를 들어, OpenShift Data Foundation 버전
4.12을 유지하면서4.12.15_1542_openshift에서4.12.16_1544_openshift로 업데이트하는 경우입니다.
업그레이드 과정에서 버전을 건너뛰는 행위(예: 에서 4.8 로 4.12 )는 지원되지 않습니다.
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
작업자 노드를 업데이트하기 전에 앱 데이터를 백업해야 합니다. 또한 한 번에 하나의 작업자 노드에 대해 다음 단계를 완료하도록 계획하십시오. 업데이트하려는 각 작업자 노드에 대해 단계를 반복하십시오.
클러스터 마스터 업데이트
주요 업데이트
- 작업자 노드를 새 주 버전으로 업데이트하는 경우 (예:
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
작업자 노드를 연결하고 비우십십시오.
주요 업데이트 소규모 업데이트
-
노드를 cordon하십시오. 노드를 cordon하면 이 노드에서 팟(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값은rook-ceph-osd접두부 바로 뒤에 있는 팟 (Pod) 이름의 정수입니다. OSD가 세 개만 있는 클러스터 또는 OSD가 제거된 후 데이터의 세 복제본을 모두 복원하기에 공간이 충분하지 않은 클러스터에서FORCE_OSD_REMOVAL값을true로 변경해야 합니다. -
OSD가 제거되었는지 확인하려면 ocs-osd-removal-job팟 (Pod) 의 상태를 확인하십시오.
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 ReleasedPV가 해제됨 상태인 경우 이를 삭제하십시오.
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 crashcollector팟 (Pod) 배치를 식별하십시오.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