3.4. 외부 모드에서 OpenShift Container Storage 설치 제거

3.4.1. 외부 모드에서 OpenShift Container Storage 설치 제거

이 섹션의 단계를 사용하여 OpenShift Container Storage를 제거합니다. OpenShift Container Storage를 설치 제거해도 외부 클러스터에서 RBD 풀이 제거되지 않거나 외부 Red Hat Ceph Storage 클러스터를 설치 제거하지 않습니다.

주석 제거

스토리지 클러스터의 주석은 제거 프로세스의 동작을 변경하는 데 사용됩니다. 설치 제거 동작을 정의하기 위해 스토리지 클러스터에 다음 두 개의 주석이 도입되었습니다.

  • uninstall.ocs.openshift.io/cleanup-policy: delete
  • uninstall.ocs.openshift.io/mode: 정상
참고

uninstall.ocs.openshift.io/cleanup-policy 는 외부 모드에 적용되지 않습니다.

아래 표는 이러한 주석과 함께 사용할 수 있는 다양한 값에 대한 정보를 제공합니다.

표 3.2. uninstall.ocs.openshift.io 제거 주석 설명

주석현재의Default동작

cleanup-policy

delete

있음

Rook은 물리적 드라이브와 DataDirHostPath를 정리합니다.

cleanup-policy

유지

없음

Rook은 물리적 드라이브 및 DataDirHostPath를 정리 하지 않습니다.

mode

정상

있음

Rook 및 NooBaa는 PVC와 OBC가 관리자/사용자가 제거할 때까지 제거 프로세스를 일시 중지합니다.

mode

강제

없음

Rook 및 NooBaa는 Rook 및 NooBaa를 사용하여 프로비저닝된 PVC/OBC가 각각 존재하는 경우에도 제거를 진행합니다.

다음 명령을 사용하여 주석의 값을 편집하여 설치 제거 모드를 변경할 수 있습니다.

$ oc annotate storagecluster ocs-external-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
storagecluster.ocs.openshift.io/ocs-external-storagecluster annotated

사전 요구 사항

  • OpenShift Container Storage 클러스터가 정상 상태인지 확인합니다. 리소스 또는 노드가 부족하여 일부 Pod가 성공적으로 종료되지 않으면 설치 제거 프로세스가 실패할 수 있습니다. 클러스터가 비정상인 경우 OpenShift Container Storage를 설치 제거하기 전에 Red Hat 고객 지원팀에 문의하십시오.
  • 애플리케이션이 OpenShift Container Storage에서 제공하는 스토리지 클래스를 사용하여 PVC(영구 볼륨 클레임) 또는 개체 버킷 클레임(OBC)을 사용하지 않는지 확인합니다.

절차

  1. OpenShift Container Storage를 사용하는 볼륨 스냅샷을 삭제합니다.

    1. 모든 네임 스페이스의 볼륨 스냅 샷 나열

      $ oc get volumesnapshot --all-namespaces
    2. 이전 명령의 출력에서 OpenShift Container Storage를 사용하는 볼륨 스냅샷을 식별하고 삭제합니다.

      $ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
  2. OpenShift Container Storage를 사용하는 PVC 및 OBC를 삭제합니다.

    기본 설치 제거 모드(허용)에서 설치 제거 프로그램은 OpenShift Container Storage를 사용하는 모든 PVC 및 OBC가 삭제됩니다.

    PVC를 사전에 삭제하지 않고 스토리지 클러스터를 삭제하려면 설치 제거 모드 주석을 "강력"으로 설정하고 이 단계를 건너뛸 수 있습니다. 이렇게 하면 시스템에서 고립된 PVC와 OBC가 생성됩니다.

    1. OpenShift Container Storage를 사용하여 OpenShift Container Platform 모니터링 스택 PVC를 삭제합니다.

      OpenShift Container Storage에서 모니터링 스택제거를 참조하십시오.

    2. OpenShift Container Storage를 사용하여 OpenShift Container Platform 레지스트리 PVC를 삭제합니다.

      OpenShift Container Storage에서 OpenShift Container Platform 레지스트리 제거

    3. OpenShift Container Storage를 사용하여 OpenShift Container Platform 로깅 PVC를 삭제합니다.

      OpenShift Container Storage에서 클러스터 로깅 Operator 제거

    4. OpenShift Container Storage를 사용하여 프로비저닝된 다른 PVC 및 OBC를 삭제합니다.

      • 다음은 OpenShift Container Storage를 사용하여 프로비저닝된 PVC 및 OBC를 식별하는 샘플 스크립트입니다. 스크립트는 Openshift Container Storage에서 내부적으로 사용하는 PVC 및 OBC를 무시합니다.

        #!/bin/bash
        
        RBD_PROVISIONER="openshift-storage.rbd.csi.ceph.com"
        CEPHFS_PROVISIONER="openshift-storage.cephfs.csi.ceph.com"
        NOOBAA_PROVISIONER="openshift-storage.noobaa.io/obc"
        RGW_PROVISIONER="openshift-storage.ceph.rook.io/bucket"
        
        NOOBAA_DB_PVC="noobaa-db"
        NOOBAA_BACKINGSTORE_PVC="noobaa-default-backing-store-noobaa-pvc"
        
        # Find all the OCS StorageClasses
        OCS_STORAGECLASSES=$(oc get storageclasses | grep -e "$RBD_PROVISIONER" -e "$CEPHFS_PROVISIONER" -e "$NOOBAA_PROVISIONER" -e "$RGW_PROVISIONER" | awk '{print $1}')
        
        # List PVCs in each of the StorageClasses
        for SC in $OCS_STORAGECLASSES
        do
                echo "======================================================================"
                echo "$SC StorageClass PVCs and OBCs"
                echo "======================================================================"
                oc get pvc  --all-namespaces --no-headers 2>/dev/null | grep $SC | grep -v -e "$NOOBAA_DB_PVC" -e "$NOOBAA_BACKINGSTORE_PVC"
                oc get obc  --all-namespaces --no-headers 2>/dev/null | grep $SC
                echo
        done
      • OBC를 삭제합니다.

        $ oc delete obc <obc name> -n <project name>
      • PVC를 삭제합니다.

        $ oc delete pvc <pvc name> -n <project-name>

        클러스터에서 생성된 사용자 정의 백업 저장소, 버킷 클래스 등을 제거했는지 확인합니다.

  3. Storage Cluster 오브젝트를 삭제하고 관련 리소스가 제거될 때까지 기다립니다.

    $ oc delete -n openshift-storage storagecluster --all --wait=true
  4. 네임스페이스를 삭제하고 삭제가 완료될 때까지 기다립니다. openshift-storage 가 활성 프로젝트인 경우 다른 프로젝트로 전환해야 합니다.

    예를 들면 다음과 같습니다.

    $ oc project default
    $ oc delete project openshift-storage --wait=true --timeout=5m

    다음 명령에서 a NotFound 오류를 반환하면 프로젝트가 삭제됩니다.

    $ oc get project openshift-storage
    참고

    OpenShift Container Storage를 설치 제거하는 동안 네임스페이스가 완전히 삭제되지 않고 종료 상태가 유지되는 경우 설치 제거 중 나머지 리소스 문제 해결 및 삭제 단계를 수행하여 네임스페이스가 종료되지 않는 오브젝트를 식별합니다.

  5. OpenShift Container Storage를 사용하여 프로비저닝된 모든 PV가 삭제되었는지 확인합니다. Released 상태에 PV가 남아 있으면 삭제합니다.

    $ oc get pv
    $ oc delete pv <pv name>
  6. Multicloud Object Gateway 스토리지 클래스를 삭제합니다.

    $ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
  7. 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 --wait=true --timeout=5m
  8. OpenShift Container Storage가 완전히 설치 제거되었는지 확인하려면 OpenShift Container Platform Web Console에서 다음을 수행합니다.

    1. Storage(스토리지)를 클릭합니다.
    2. Storage(스토리지)에 Overview (개요)가 더 이상 표시되지 않는지 확인합니다.