OpenShift Data Foundation 제거
다음 주제를 검토하여 OpenShift Container Storage 배치를 관리하십시오.
앱에서 ODF 제거
앱에서 ODF를 제거하기 위해 앱 또는 배치와 해당 PVC를 삭제할 수 있습니다.
ODF 및 모든 데이터를 완전히 제거하려는 경우 스토리지 클러스터를 제거할 수 있습니다.
- PVC를 나열하고 제거할 PVC 및 해당 PV의 이름을 기록해 두십시오.
oc get pvc - PVC를 마운트하는 팟(Pod)을 제거하십시오.
- 삭제할 PVC를 현재 마운트하는 모든 팟(Pod)을 나열하십시오. 팟(Pod)이 리턴되지 않으면 현재 PVC를 사용하는 팟(Pod)이 없는 것입니다.
oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>" ``` 출력 예 ```sh {: screen} app ocs-storagecluster-cephfs ``` 2. PVC를 사용하는 팟(Pod)을 제거하십시오. 팟(Pod)이 배치의 일부인 경우에는 배치를 제거하십시오. ```sh {: pre} oc delete pod <pod_name> ``` ```sh {: pre} oc delete deployment <deployment_name> ``` 3. 팟(Pod) 또는 배치가 제거되었는지 확인하십시오. ```sh {: pre} oc get pods ``` ```sh {: pre} oc get deployments ``` - 선택사항 PVC를 삭제하십시오. PVC를 삭제하면 스토리지 볼륨에서 앱 데이터가 삭제됩니다.
oc delete pvc <pvc_name>
ODF 사용자 정의 리소스 제거
다음 단계를 완료하여 클러스터에서 ODF 리소스를 제거하십시오.
다음 단계를 수행하면 데이터가 손실됩니다. ODF 배치를 제거하기 전에 로컬 볼륨에 데이터를 백업하십시오.
클러스터에서 OcsCluster 사용자 정의 리소스를 삭제하면 다음 리소스가 삭제됩니다. 또한 로컬 볼륨의 데이터에 액세스해야 하는 앱에서 작동 중단이 발생할 수 있습니다. - ODF 드라이버 팟(Pod). - MON 및 OSD PVC. - 볼륨의 모든 데이터. 하지만 NooBaa 스토리지 클래스를 사용하여 PVC를 작성했고 앱이 백업 저장소에 데이터를 쓴 경우 백업 저장소의 데이터가 삭제되지 않습니다.
OcsCluster사용자 정의 리소스의 이름을 가져오십시오.oc get ocsclusterocscluster-vpc라는 사용자 정의 리소스의 출력 예제.NAME AGE ocscluster-vpc 4sOcsCluster사용자 정의 리소스를 삭제하십시오.<ocscluster_name>을 사용자 정의 리소스의 이름으로 대체하십시오.oc delete ocscluster <ocscluster_name>OcsCluster라는ocscluster-vpc사용자 정의 리소스의 명령 예제.oc delete ocscluster ocscluster-vpc- 작성한 PVC를 삭제하십시오.
oc get pvc - 선택사항 ODF를 다시 설치하지 않으려는 경우 클러스터에서 ODF 추가 기능을 제거할 수 있습니다.
ODF 정리
- 사용자의 ODF 배치에 따라 다음 정리 스크립트 중 하나를 복사하십시오.
- VPC 또는 동적으로 프로비저닝되는 디스크가 있는 Satellite 클러스터에서 나머지 Kubernetes 리소스를 정리하십시오. 다음 스크립트를
cleanup.sh라는 파일로 로컬 시스템에 저장하십시오.
#!/bin/bash ocscluster_name=`oc get ocscluster | awk 'NR==2 {print $1}'` oc delete ocscluster --all --wait=false kubectl patch ocscluster/$ocscluster_name -p '{"metadata":{"finalizers":[]}}' --type=merge oc delete ns openshift-storage --wait=false sleep 20 kubectl -n openshift-storage patch persistentvolumeclaim/db-noobaa-db-0 -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephblockpool.ceph.rook.io/ocs-storagecluster-cephblockpool -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephcluster.ceph.rook.io/ocs-storagecluster-cephcluster -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephfilesystem.ceph.rook.io/ocs-storagecluster-cephfilesystem -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephobjectstore.ceph.rook.io/ocs-storagecluster-cephobjectstore -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephobjectstoreuser.ceph.rook.io/noobaa-ceph-objectstore-user -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephobjectstoreuser.ceph.rook.io/ocs-storagecluster-cephobjectstoreuser -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch noobaa/noobaa -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch backingstores.noobaa.io/noobaa-default-backing-store -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch bucketclasses.noobaa.io/noobaa-default-bucket-class -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch storagecluster.ocs.openshift.io/ocs-storagecluster -p '{"metadata":{"finalizers":[]}}' --type=merge sleep 20 oc delete pods -n openshift-storage --all --force --grace-period=0 sleep 20 for item in `oc get csiaddonsnodes.csiaddons.openshift.io -n openshift-storage| awk 'NR>1 {print $1}'`; do kubectl -n openshift-storage patch csiaddonsnodes.csiaddons.openshift.io/$item -p '{"metadata":{"finalizers":[]}}' --type=merge done kubectl -n openshift-storage patch configmap/rook-ceph-mon-endpoints -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch secret/rook-ceph-mon -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch storagesystems.odf.openshift.io/ocs-storagecluster-storagesystem -p '{"metadata":{"finalizers":[]}}' --type=merge ``` * **클래식 클러스터 또는 로컬 디스크가 있는 Satellite 클러스터** 클러스터에서 나머지 Kubernetes 리소스를 정리하십시오. 다음 스크립트를 `cleanup.sh`라는 파일로 로컬 시스템에 저장하십시오. ```sh {: codeblock} #!/bin/bash ocscluster_name=`oc get ocscluster | awk 'NR==2 {print $1}'` oc delete ocscluster --all --wait=false kubectl patch ocscluster/$ocscluster_name -p '{"metadata":{"finalizers":[]}}' --type=merge oc delete ns openshift-storage --wait=false sleep 20 kubectl -n openshift-storage patch persistentvolumeclaim/db-noobaa-db-0 -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephblockpool.ceph.rook.io/ocs-storagecluster-cephblockpool -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephcluster.ceph.rook.io/ocs-storagecluster-cephcluster -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephfilesystem.ceph.rook.io/ocs-storagecluster-cephfilesystem -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephobjectstore.ceph.rook.io/ocs-storagecluster-cephobjectstore -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephobjectstoreuser.ceph.rook.io/noobaa-ceph-objectstore-user -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch cephobjectstoreuser.ceph.rook.io/ocs-storagecluster-cephobjectstoreuser -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch noobaa/noobaa -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch backingstores.noobaa.io/noobaa-default-backing-store -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch bucketclasses.noobaa.io/noobaa-default-bucket-class -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch storagecluster.ocs.openshift.io/ocs-storagecluster -p '{"metadata":{"finalizers":[]}}' --type=merge sleep 20 oc delete pods -n openshift-storage --all --force --grace-period=0 if oc get po -n openshift-local-storage|grep -operator; then LOCAL_NS=openshift-local-storage else LOCAL_NS=local-storage fi oc delete ns $LOCAL_NS --wait=false sleep 20 kubectl -n $LOCAL_NS patch localvolume.local.storage.openshift.io/local-block -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n $LOCAL_NS patch localvolume.local.storage.openshift.io/local-file -p '{"metadata":{"finalizers":[]}}' --type=merge sleep 20 oc delete pods -n $LOCAL_NS --all --force --grace-period=0 for item in `oc get csiaddonsnodes.csiaddons.openshift.io -n openshift-storage| awk 'NR>1 {print $1}'`; do kubectl -n openshift-storage patch csiaddonsnodes.csiaddons.openshift.io/$item -p '{"metadata":{"finalizers":[]}}' --type=merge done kubectl -n openshift-storage patch configmap/rook-ceph-mon-endpoints -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch secret/rook-ceph-mon -p '{"metadata":{"finalizers":[]}}' --type=merge kubectl -n openshift-storage patch storagesystems.odf.openshift.io/ocs-storagecluster-storagesystem -p '{"metadata":{"finalizers":[]}}' --type=merge ``` - VPC 또는 동적으로 프로비저닝되는 디스크가 있는 Satellite 클러스터에서 나머지 Kubernetes 리소스를 정리하십시오. 다음 스크립트를
cleanup.sh스크립트를 실행하십시오.sh ./cleanup.sh- **클래식 클러스터 또는 로컬 디스크가 있는 Satellite 클러스터 정리 스크립트를 실행한 후 각 작업자 노드에 로그인하고 다음 명령을 실행하십시오.
- 디버그 팟(Pod)을 배치하고
chroot /host를 실행하십시오.
oc debug node/<node_name> -- chroot /host ``` 1. 다음 명령을 실행하여 지정된 경로에서 파일 또는 디렉토리를 제거하십시오. OCS 구성에서 사용한 각 작업자 노드에 대해 이 단계를 반복하십시오. ```sh {: codeblock} rm -rvf /var/lib/rook /mnt/local-storage ``` 출력 예: ```sh {: codeblock} removed '/var/lib/rook/openshift-storage/log/ocs-deviceset-0-data-0-6fgp6/ceph-volume.log' removed directory: '/var/lib/rook/openshift-storage/log/ocs-deviceset-0-data-0-6fgp6' removed directory: '/var/lib/rook/openshift-storage/log' removed directory: '/var/lib/rook/openshift-storage/crash/posted' removed directory: '/var/lib/rook/openshift-storage/crash' removed '/var/lib/rook/openshift-storage/client.admin.keyring' removed '/var/lib/rook/openshift-storage/openshift-storage.config' removed directory: '/var/lib/rook/openshift-storage' removed directory: '/var/lib/rook' removed '/mnt/local-storage/localblock/nvme3n1' removed directory: '/mnt/local-storage/localblock' removed '/mnt/local-storage/localfile/nvme2n1' removed directory: '/mnt/local-storage/localfile' removed directory: '/mnt/local-storage' ``` - 디버그 팟(Pod)을 배치하고
- 선택사항: 클래식 클러스터 또는 로컬 디스크가 있는 Satellite 클러스터 구성에서 사용한 로컬 볼륨을 더 이상 사용하지 않으려는 경우 클러스터에서 삭제할 수 있습니다. 로컬 PV를 나열하십시오.
출력 예:oc get pvlocal-pv-180cfc58 139Gi RWO Delete Available localfile 11m local-pv-67f21982 139Gi RWO Delete Available localfile 12m local-pv-80c5166 100Gi RWO Delete Available localblock 12m local-pv-9b049705 139Gi RWO Delete Available localfile 12m local-pv-b09e0279 100Gi RWO Delete Available localblock 12m local-pv-f798e570 100Gi RWO Delete Available localblock 12m - 로컬 PV를 삭제하십시오.
oc delete pv <pv_name> <pv_name> <pv_name> - PVC및 PV를 삭제한 후에는 계정에서 스토리지 볼륨도 삭제해야 합니다. 계정에서 사용하지 않는 스토리지 볼륨을 찾아 제거하려면 내 클러스터를 삭제한 후에도 블록 스토리지 디바이스에 대한 비용이 계속 표시되는 이유는 무엇입니까? 를 참조하십시오.
OpenShift Data Foundation 추가 기능 설치 제거
콘솔에서 OpenShift Data Foundation 추가 기능 설치 제거
클러스터에서 OpenShift Data Foundation 추가 기능을 제거하려면 다음 단계를 완료하십시오.
클러스터에서 모든 ODF 자원 및 데이터를 제거하려면 추가 기능을 설치 제거하기 전에 CRD를 제거 하십시오.
- 콘솔 에서 ‘ OpenShift Data Foundation’ 애드온을 제거하려는 클러스터를 선택합니다.
- 설치된 애드온으로 스크롤하세요.
- OpenShift Data Foundation 카드에서 조치 아이콘을 클릭한 후 설치 제거를 클릭하십시오.
CLI에서 OpenShift Data Foundation 추가 기능 설치 제거
콘솔 이나 CLI를 사용하여 클러스터에서 ‘ OpenShift Data Foundation’ 애드온을 제거할 수 있습니다.
클러스터에서 모든 ODF 자원 및 데이터를 제거하려면 추가 기능을 설치 제거하기 전에 CRD를 제거 하십시오.
- 추가 기능을 설치 제거하십시오.
ibmcloud oc cluster addon disable openshift-container-storage -c <cluster_name> - 추가 기능이 제거되었는지 확인하십시오.
ibmcloud oc cluster addon ls -c <cluster_name>
ODF 문제점 해결
ODF 문제점 해결에 필요한 정보를 수집하기 위해 oc adm must-gather 명령을 사용하고 ODF 이미지를 지정할 수 있습니다. 자세한 정보는 클러스터 데이터 수집을 참조하십시오.
명령 예제:
oc adm must-gather --image=registry.redhat.io/ocs4/ocs-must-gather-rhel8:latest --dest-dir=ocs_mustgather
Rook 커뮤니티 도구 상자를 사용하여 Ceph 클러스터의 문제를 디버그할 수 있습니다. 자세한 내용은 ‘ Rook ’ 문서를 참조하십시오.
자세한 정보는 공통 문제점 해결 주제를 검토하십시오.