OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
4장. OpenShift Data Foundation 설치 제거
4.1. 내부 연결 장치 모드에서 OpenShift Data Foundation 설치 제거 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션의 단계를 사용하여 OpenShift Data Foundation을 제거합니다.
주석 제거
Storage Cluster의 주석은 제거 프로세스의 동작을 변경하는 데 사용됩니다. 제거 제거 동작을 정의하기 위해 스토리지 클러스터에 다음 두 가지 주석이 도입되었습니다.
-
uninstall.ocs.openshift.io/cleanup-policy: delete -
uninstall.ocs.openshift.io/mode: graceful
다음 표에서는 이러한 주석과 함께 사용할 수 있는 다양한 값에 대한 정보를 제공합니다.
| 주석 | 값 | 기본값 | 동작 |
|---|---|---|---|
| cleanup-policy | delete | 있음 |
Rook은 물리 드라이브와 |
| cleanup-policy | 보존 | 없음 |
Rook은 물리적 드라이브와 |
| mode | graceful | 있음 | Rook 및 NooBaa는 관리자/사용자가 PVC(영구 볼륨 클레임) 및 Object Bucket Claims(OBC)를 제거할 때까지 제거 프로세스를 일시 중지합니다. |
| mode | 강제 | 없음 | Rook 및 NooBaa는 Rook 및 NooBaa를 사용하여 프로비저닝된 PVC/OBC가 각각 존재하는 경우에도 제거됨을 진행합니다. |
주석 값을 편집하여 정리 정책 또는 제거 모드를 변경합니다.
oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
$ oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
$ oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
두 명령에 대해 예상되는 출력:
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
사전 요구 사항
- OpenShift Data Foundation 클러스터가 정상 상태인지 확인합니다. 리소스 또는 노드로 부족하여 일부 Pod가 성공적으로 종료되지 않으면 설치 제거 프로세스가 실패할 수 있습니다. 클러스터가 비정상 상태인 경우 OpenShift Data Foundation을 제거하기 전에 Red Hat Customer Support에 문의하십시오.
- 애플리케이션이 OpenShift Data Foundation에서 제공하는 스토리지 클래스를 사용하여 PVC(영구 볼륨 클레임) 또는 개체 버킷 클레임(OBC)을 사용하지 않는지 확인합니다.
- 관리자가 사용자 정의 리소스(예: 사용자 정의 스토리지 클래스, cephblockpool)를 생성한 경우 관리자가 이를 사용하는 리소스를 제거한 후 관리자가 삭제해야 합니다.
절차
OpenShift Data Foundation을 사용하는 볼륨 스냅샷을 삭제합니다.
모든 네임스페이스의 볼륨 스냅샷을 나열합니다.
oc get volumesnapshot --all-namespaces
$ oc get volumesnapshot --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령의 출력에서 OpenShift Data Foundation을 사용하는 볼륨 스냅샷을 식별하고 삭제합니다.
oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
$ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <VOLUME-SNAPSHOT-NAME>- 볼륨 스냅샷의 이름입니다.
<NAMESPACE>- 프로젝트 네임스페이스입니까?
OpenShift Data Foundation을 사용하는 PVC 및 OBC를 삭제합니다.
기본 제거 모드(graceful)에서는 OpenShift Data Foundation을 사용하는 모든 PVC와 OBCs가 삭제될 때까지 설치 제거가 대기합니다.
PVC를 삭제하지 않고 Storage 클러스터를 삭제하려면 uninstall mode 주석을
강제적용하고 이 단계를 건너뛰도록 설정할 수 있습니다. 이렇게 하면 시스템의 고립된 PVC 및 OBC가 생성됩니다.OpenShift Data Foundation을 사용하여 OpenShift Container Platform 모니터링 스택 PVC를 삭제합니다.
OpenShift Data Foundation을 사용하여 OpenShift Container Platform 레지스트리 PVC를 삭제합니다.
OpenShift Data Foundation에서 OpenShift Container Platform 레지스트리 제거
OpenShift Data Foundation을 사용하여 OpenShift Container Platform 로깅 PVC를 삭제합니다.
OpenShift Data Foundation을 사용하여 프로비저닝된 다른 PVC 및 OBC를 삭제합니다.
다음은 OpenShift Data Foundation을 사용하여 프로비저닝된 PVC 및 OBC를 식별하는 샘플 스크립트입니다. 이 스크립트는 OpenShift Data Foundation에서 내부적으로 사용하는 PVC를 무시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고클라우드 플랫폼에
RGW_PROVISIONER를 생략합니다.OBC를 삭제합니다.
oc delete obc <obc-name> -n <project-name>
$ oc delete obc <obc-name> -n <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <obc-name>- OBC의 이름입니다.
<project-name>- 프로젝트의 이름입니다.
PVC를 삭제합니다.
oc delete pvc <pvc-name> -n <project-name>
$ oc delete pvc <pvc-name> -n <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pvc-name>- PVC의 이름입니다.
<project-name>프로젝트의 이름입니다.
참고클러스터에 생성된 사용자 정의 백업 저장소, 버킷 클래스 등을 모두 제거했는지 확인합니다.
Storage System 오브젝트를 삭제하고 연결된 리소스가 제거될 때까지 기다립니다.
oc delete -n openshift-storage storagesystem --all --wait=true
$ oc delete -n openshift-storage storagesystem --all --wait=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow uninstall.ocs.openshift.io/cleanup-policy가delete(기본값)로 설정되어 있는지 정리 Pod를 확인하고 상태가Completed인지 확인합니다.oc get pods -n openshift-storage | grep -i cleanup
$ oc get pods -n openshift-storage | grep -i cleanupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
NAME READY STATUS RESTARTS AGE cluster-cleanup-job-<xx> 0/1 Completed 0 8m35s cluster-cleanup-job-<yy> 0/1 Completed 0 8m35s cluster-cleanup-job-<zz> 0/1 Completed 0 8m35s
NAME READY STATUS RESTARTS AGE cluster-cleanup-job-<xx> 0/1 Completed 0 8m35s cluster-cleanup-job-<yy> 0/1 Completed 0 8m35s cluster-cleanup-job-<zz> 0/1 Completed 0 8m35sCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/rook디렉토리가 이제 비어 있는지 확인합니다. 이 디렉터리는uninstall.ocs.openshift.io/cleanup-policy주석이delete(기본값)로 설정된 경우에만 비어 있습니다.for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; done$ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 설치 시 암호화가 활성화된 경우 모든 OpenShift Data Foundation 노드의 OSD
장치에서매핑을 제거합니다.dm-crypt관리 장치-매퍼스토리지 노드의 호스트에
디버그Pod 및chroot를 생성합니다.oc debug node/<node-name>
$ oc debug node/<node-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow <node-name>- 노드의 이름입니다.
장치 이름을 가져오고 OpenShift Data Foundation 장치를 기록합니다.
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 매핑된 장치를 제거합니다.
cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요권한이 부족하여 위의 명령이 중단되면 다음 명령을 실행합니다.
-
Ctrl+Z를 눌러 위 명령을 종료합니다. 중지된 프로세스의 PID를 찾습니다.
ps -ef | grep crypt
$ ps -ef | grep cryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow kill명령을 사용하여 프로세스를 종료합니다.kill -9 <PID>
$ kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <PID>- 프로세스 ID입니다.
장치 이름이 제거되었는지 확인합니다.
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
네임스페이스를 삭제하고 삭제가 완료될 때까지 기다립니다.
openshift-storage가 활성 프로젝트인 경우 다른 프로젝트로 전환해야 합니다.예를 들어 다음과 같습니다.
oc project default
$ oc project defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete project openshift-storage --wait=true --timeout=5m
$ oc delete project openshift-storage --wait=true --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령에서 NotFound 오류를 반환하면 프로젝트가 삭제됩니다.
oc get project openshift-storage
$ oc get project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고OpenShift Data Foundation을 설치 제거하는 동안
네임스페이스가 완전히 삭제되지 않고종료상태로 남아 있는 경우, 설치 제거 중에 남은 리소스 문제 해결 및 삭제 단계를 수행하여 네임스페이스가 종료되지 않도록 하는 오브젝트를 식별합니다.- 로컬 스토리지 장치를 사용하여 OpenShift Data Foundation을 배포한 경우 로컬 스토리지 Operator 구성을 삭제합니다. 로컬 스토리지 Operator 구성 제거를 참조하십시오.
스토리지 노드의 레이블을 지정합니다.
oc label nodes --all cluster.ocs.openshift.io/openshift-storage-
$ oc label nodes --all cluster.ocs.openshift.io/openshift-storage-Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label nodes --all topology.rook.io/rack-
$ oc label nodes --all topology.rook.io/rack-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드가 테인트된 경우 OpenShift Data Foundation 테인트를 제거합니다.
oc adm taint nodes --all node.ocs.openshift.io/storage-
$ oc adm taint nodes --all node.ocs.openshift.io/storage-Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Data Foundation을 사용하여 프로비저닝된 모든 PV(영구 볼륨)가 삭제되었는지 확인합니다.
Released상태에 PV가 남아 있는 경우 삭제합니다.oc get pv
$ oc get pvCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pv <pv-name>
$ oc delete pv <pv-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pv-name>- PV의 이름입니다.
CustomResourceDefinitions를 제거합니다.oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io storagesystems.odf.openshift.io --wait=true --timeout=5m
$ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io storagesystems.odf.openshift.io --wait=true --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Data Foundation이 완전히 제거되도록 하려면 OpenShift Container Platform 웹 콘솔에서
- 스토리지 를 클릭합니다.
- OpenShift Data Foundation 이 Storage에 더 이상 표시되지 않는지 확인합니다.
4.1.1. 로컬 스토리지 Operator 구성 제거 링크 복사링크가 클립보드에 복사되었습니다!
로컬 스토리지 장치를 사용하여 OpenShift Data Foundation을 배포한 경우에만 이 섹션의 지침을 사용합니다.
OpenShift Data Foundation 배포의 경우 localvolume 리소스를 사용하는 경우에만 8단계로 이동합니다.
절차
LocalVolumeSet및 OpenShift Data Foundation에서 사용 중인 해당StorageClassName을 식별합니다.oc get localvolumesets.local.storage.openshift.io -n openshift-local-storage
$ oc get localvolumesets.local.storage.openshift.io -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeSet을 제공하는StorageClass로 변수 SC를 설정합니다.export SC="<StorageClassName>"
$ export SC="<StorageClassName>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 정리할 장치를 나열하고 기록해 둡니다. 디스크의 장치 ID를 나열하려면 여기에 언급된 절차에 따라 사용 가능한 스토리지 장치 찾기를 참조하십시오.
출력 예:
/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3
/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3Copy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeSet을 삭제합니다.oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
$ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된
StorageClassName의 로컬 스토리지 PV를 삭제합니다.oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv$ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pvCopy to Clipboard Copied! Toggle word wrap Toggle overflow StorageClassName을 삭제합니다.oc delete sc $SC
$ oc delete sc $SCCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeSet에서 생성된 심볼릭 링크를 삭제합니다.[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeDiscovery를 삭제합니다.oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
$ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolume리소스를 제거합니다(있는 경우).다음 단계를 사용하여 현재 또는 이전 OpenShift Data Foundation 버전에서 PV를 프로비저닝하는 데 사용된
LocalVolume리소스를 제거합니다. 또한 클러스터의 다른 테넌트에서 이러한 리소스를 사용하지 않는지 확인합니다.각 로컬 볼륨에 대해 다음을 수행합니다.
LocalVolume과 OpenShift Data Foundation에서 사용 중인 해당StorageClassName을 식별합니다.oc get localvolume.local.storage.openshift.io -n openshift-local-storage
$ oc get localvolume.local.storage.openshift.io -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 변수 LV를 LocalVolume 및 변수 SC의 이름으로 StorageClass의 이름으로 설정합니다.
예를 들어 다음과 같습니다.
LV=local-block SC=localblock
$ LV=local-block $ SC=localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 정리할 장치를 나열하고 기록해 둡니다.
oc get localvolume -n openshift-local-storage $LV -o jsonpath='{ .spec.storageClassDevices[].devicePaths[] }{"\n"}'$ oc get localvolume -n openshift-local-storage $LV -o jsonpath='{ .spec.storageClassDevices[].devicePaths[] }{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
/dev/sdb /dev/sdc /dev/sdd /dev/sde
/dev/sdb /dev/sdc /dev/sdd /dev/sdeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로컬 볼륨 리소스를 삭제합니다.
oc delete localvolume -n openshift-local-storage --wait=true $LV
$ oc delete localvolume -n openshift-local-storage --wait=true $LVCopy to Clipboard Copied! Toggle word wrap Toggle overflow 나머지 PV 및 StorageClasses가 있는 경우 삭제합니다.
oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m oc delete storageclass $SC --wait --timeout=5m$ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m $ oc delete storageclass $SC --wait --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 해당 리소스의 스토리지 노드에서 아티팩트를 정리합니다.
[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done$ [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1단계와 8단계에 나열된 각 로컬 볼륨 세트 또는 로컬 볼륨에 대해 디스크를 삭제하여 재사용할 수 있습니다.
스토리지 노드를 나열합니다.
oc get nodes -l cluster.ocs.openshift.io/openshift-storage=
oc get nodes -l cluster.ocs.openshift.io/openshift-storage=Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
NAME STATUS ROLES AGE VERSION node-xxx Ready worker 4h45m v1.18.3+6c42de8 node-yyy Ready worker 4h46m v1.18.3+6c42de8 node-zzz Ready worker 4h45m v1.18.3+6c42de8
NAME STATUS ROLES AGE VERSION node-xxx Ready worker 4h45m v1.18.3+6c42de8 node-yyy Ready worker 4h46m v1.18.3+6c42de8 node-zzz Ready worker 4h45m v1.18.3+6c42de8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드 콘솔을 확보하고 프롬프트가 표시되면
chroot /host명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디스크 경로를 따옴표 내에 DISKS 변수에 저장합니다. 디스크 경로 목록은 각각 로컬 볼륨 세트 및 로컬 볼륨의 경우 3단계 및 단계 8.c를 참조하십시오.
출력 예:
DISKS="/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3 " or DISKS="/dev/sdb /dev/sdc /dev/sdd /dev/sde ".
sh-4.4# DISKS="/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3 " or sh-4.2# DISKS="/dev/sdb /dev/sdc /dev/sdd /dev/sde ".Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 디스크에서
sgdisk --zap-all을 실행합니다.for disk in $DISKS; do sgdisk --zap-all $disk;done
sh-4.4# for disk in $DISKS; do sgdisk --zap-all $disk;doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘을 종료하고 다른 노드에 대해 반복합니다.
exit exit exit exit Removing debug pod ...
sh-4.4# exit exit sh-4.2# exit exit Removing debug pod ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openshift-local-storage네임스페이스를 삭제하고 삭제가 완료될 때까지 기다립니다.openshift-local-storage네임스페이스가 활성 프로젝트인 경우 다른 프로젝트로 전환해야 합니다.예를 들어 다음과 같습니다.
oc project default oc delete project openshift-local-storage --wait=true --timeout=5m
$ oc project default $ oc delete project openshift-local-storage --wait=true --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령에서 NotFound 오류를 반환하면 프로젝트가 삭제됩니다.
oc get project openshift-local-storage
$ oc get project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow