5장. OpenShift Container Storage 설치 제거


5.1. 내부 모드에서 OpenShift Container Storage 설치 제거

이 섹션의 단계를 사용하여 OpenShift Container Storage를 설치 제거합니다.

주석 제거

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

  • uninstall.ocs.openshift.io/cleanup-policy: delete
  • uninstall.ocs.openshift.io/mode: normal

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

Expand
표 5.1. uninstall.ocs.openshift.io 제거 주석 설명
주석기본값동작

cleanup-policy

delete

있음

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

cleanup-policy

유지

없음

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

mode

정상

있음

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

mode

강제

없음

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

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

$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
Copy to Clipboard Toggle word wrap
$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
Copy to Clipboard Toggle word wrap

사전 요구 사항

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

절차

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

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

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

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

    기본 제거 모드(graceful)에서 제거 프로그램은 OpenShift Container Storage를 사용하는 모든 PVC 및 OBC가 삭제될 때까지 기다립니다.

    PVC를 미리 삭제하지 않고 Storage Cluster를 삭제하려면 제거 모드 주석을 "forced"로 설정하고 이 단계를 건너뛸 수 있습니다. 이렇게 하면 시스템의 PVC 및 OBC가 생성됩니다.

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

      보기 5.2절. “OpenShift Container Storage에서 모니터링 스택 제거”

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

      보기 5.3절. “OpenShift Container Storage에서 OpenShift Container Platform 레지스트리 제거”

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

      보기 5.4절. “OpenShift Container Storage에서 클러스터 로깅 Operator 제거”

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

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

        #!/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
        Copy to Clipboard Toggle word wrap
        참고

        클라우드 플랫폼에 대해 RGW_PROVISIONER 를 생략합니다.

      • OBC를 삭제합니다.

        $ oc delete obc <obc name> -n <project name>
        Copy to Clipboard Toggle word wrap
      • PVC를 삭제합니다.

        $ oc delete pvc <pvc name> -n <project-name>
        Copy to Clipboard Toggle word wrap
        참고

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

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

    $ oc delete -n openshift-storage storagecluster --all --wait=true
    Copy to Clipboard Toggle word wrap
  4. uninstall.ocs.openshift.io/cleanup-policydelete(기본값)로 설정된 경우 정리 Pod가 있는지 확인하고 해당 상태가 Completed 인지 확인합니다.

    $ oc get pods -n openshift-storage | grep -i cleanup
    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
    Copy to Clipboard Toggle word wrap
  5. /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
    Copy to Clipboard Toggle word wrap
  6. 설치 시 암호화가 활성화된 경우 모든 OpenShift Container Storage 노드의 OSD 장치에서 dm-crypt 관리 장치-mapper 매핑을 제거합니다.

    1. 스토리지 노드의 호스트에 디버그 Pod 및 chroot 를 생성합니다.

      $ oc debug node/<node name>
      $ chroot /host
      Copy to Clipboard Toggle word wrap
    2. 장치 이름을 가져오고 OpenShift Container Storage 장치를 기록해 둡니다.

      $ dmsetup ls
      ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
      Copy to Clipboard Toggle word wrap
    3. 매핑된 장치를 제거합니다.

      $ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
      Copy to Clipboard Toggle word wrap
      참고

      충분하지 않은 권한으로 인해 위 명령이 중단되는 경우 다음 명령을 실행합니다.

      • CTRL+Z 를 눌러 위의 명령을 종료합니다.
      • 정지된 프로세스의 PID를 찾습니다.

        $ ps -ef | grep crypt
        Copy to Clipboard Toggle word wrap
      • kill 명령을 사용하여 프로세스를 종료합니다.

        $ kill -9 <PID>
        Copy to Clipboard Toggle word wrap
      • 장치 이름이 제거되었는지 확인합니다.

        $ dmsetup ls
        Copy to Clipboard Toggle word wrap
  7. 네임스페이스를 삭제하고 삭제가 완료될 때까지 기다립니다. openshift-storage 가 활성 프로젝트인 경우 다른 프로젝트로 전환해야 합니다.

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

    $ oc project default
    $ oc delete project openshift-storage --wait=true --timeout=5m
    Copy to Clipboard Toggle word wrap

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

    $ oc get project openshift-storage
    Copy to Clipboard Toggle word wrap
    참고

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

  8. 로컬 스토리지 장치를 사용하여 OpenShift Container Storage를 배포한 경우 로컬 스토리지 Operator 구성을 삭제합니다. 로컬 스토리지 Operator 구성 제거를 참조하십시오.
  9. 스토리지 노드의 레이블을 지정 해제합니다.

    $ oc label nodes  --all cluster.ocs.openshift.io/openshift-storage-
    $ oc label nodes  --all topology.rook.io/rack-
    Copy to Clipboard Toggle word wrap
  10. 노드가 테인트된 경우 OpenShift Container Storage 테인트를 제거합니다.

    $ oc adm taint nodes --all node.ocs.openshift.io/storage-
    Copy to Clipboard Toggle word wrap
  11. OpenShift Container Storage를 사용하여 프로비저닝된 모든 PV가 삭제되었는지 확인합니다. Released 상태에 PV가 남아 있으면 삭제합니다.

    $ oc get pv
    $ oc delete pv <pv name>
    Copy to Clipboard Toggle word wrap
  12. Multicloud Object Gateway 스토리지 클래스를 삭제합니다.

    $ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
    Copy to Clipboard Toggle word wrap
  13. 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
    Copy to Clipboard Toggle word wrap
  14. 선택 사항: 자격 증명 모음 키가 영구적으로 삭제되도록 하려면 vault 키와 연결된 메타데이터를 수동으로 삭제해야 합니다.

    참고

    Vault Key/Value (KV) 시크릿 엔진 API인 경우에만 이 단계를 실행합니다. OpenShift Container Storage 제거 중에 자격 증명 키가 삭제되어 영구적으로 삭제되지 않으므로 버전 2는 KMS(Key Management System)를 사용한 클러스터 전체 암호화에 사용됩니다. 필요한 경우 나중에 언제든지 복원할 수 있습니다.

    1. 자격 증명 모음의 키를 나열합니다.

      $ vault kv list <backend_path>
      Copy to Clipboard Toggle word wrap
      <backend_path>

      암호화 키가 저장된 자격 증명 모음의 경로입니다.

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

      $ vault kv list kv-v2
      Copy to Clipboard Toggle word wrap

      출력 예:

      Keys
      -----
      NOOBAA_ROOT_SECRET_PATH/
      rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
      rook-ceph-osd-encryption-key-ocs-deviceset-thin-1-data-0sq227
      rook-ceph-osd-encryption-key-ocs-deviceset-thin-2-data-0xzszb
      Copy to Clipboard Toggle word wrap
    2. vault 키와 연결된 메타데이터를 나열합니다.

      $ vault kv get kv-v2/<key>
      Copy to Clipboard Toggle word wrap

      MCG(Multicloud Object Gateway) 키의 경우 다음을 수행합니다.

      $ vault kv get kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
      Copy to Clipboard Toggle word wrap
      <key>

      암호화 키입니다.

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

      $ vault kv get kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
      Copy to Clipboard Toggle word wrap

      출력 예:

      ====== Metadata ======
      Key              Value
      ---              -----
      created_time     2021-06-23T10:06:30.650103555Z
      deletion_time    2021-06-23T11:46:35.045328495Z
      destroyed        false
      version          1
      Copy to Clipboard Toggle word wrap
    3. 메타데이터를 삭제합니다.

      $ vault kv metadata delete kv-v2/<key>
      Copy to Clipboard Toggle word wrap

      MCG 키의 경우:

      $ vault kv metadata delete kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
      Copy to Clipboard Toggle word wrap
      <key>

      암호화 키입니다.

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

      $ vault kv metadata delete kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
      Copy to Clipboard Toggle word wrap

      출력 예:

      Success! Data deleted (if it existed) at: kv-v2/metadata/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
      Copy to Clipboard Toggle word wrap
    4. 모든 자격 증명 모음 키와 연결된 메타데이터를 삭제하려면 이 단계를 반복합니다.
  15. OpenShift Container Platform 웹 콘솔에서 OpenShift Container Storage를 완전히 제거하려면 다음을 수행합니다.

    1. 개요 를 클릭하여 대시보드에 액세스합니다.
    2. 클러스터 탭 옆에 영구 스토리지 및 Object Service 탭이 더 이상 표시되지 않는지 확인합니다.

5.1.1. 로컬 스토리지 Operator 구성 제거

로컬 스토리지 장치를 사용하여 OpenShift Container Storage를 배포한 경우에만 이 섹션의 지침을 사용하십시오.

참고

OpenShift Container Storage 배포의 경우 localvolume 리소스만 사용하는 경우 8 단계로 직접 이동합니다.

절차

  1. OpenShift Container Storage에서 사용하는 LocalVolumeSet 및 해당 StorageClassName 을 식별합니다.
  2. LocalVolumeSet 을 제공하는 StorageClass 로 변수 SC를 설정합니다.

    $ export SC="<StorageClassName>"
    Copy to Clipboard Toggle word wrap
  3. LocalVolumeSet 을 삭제합니다.

    $ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
    Copy to Clipboard Toggle word wrap
  4. 지정된 StorageClassName 의 로컬 스토리지 PV를 삭제합니다.

    $ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv
    Copy to Clipboard Toggle word wrap
  5. StorageClassName 을 삭제합니다.

    $ oc delete sc $SC
    Copy to Clipboard Toggle word wrap
  6. 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
    Copy to Clipboard Toggle word wrap
  7. LocalVolumeDiscovery 를 삭제합니다.

    $ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
    Copy to Clipboard Toggle word wrap
  8. LocalVolume 리소스 제거(있는 경우).

    현재 또는 이전 OpenShift Container Storage 버전의 PV를 프로비저닝하는 데 사용된 LocalVolume 리소스를 제거하려면 다음 단계를 사용합니다. 또한 클러스터의 다른 테넌트에서 이러한 리소스를 사용하지 않는지 확인합니다.

    각 로컬 볼륨에 대해 다음을 수행합니다.

    1. OpenShift Container Storage에서 사용하는 LocalVolume 및 해당 StorageClassName 을 식별합니다.
    2. LocalVolume 및 변수 SC의 이름으로 변수 LV를 StorageClass의 이름으로 설정합니다.

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

      $ LV=local-block
      $ SC=localblock
      Copy to Clipboard Toggle word wrap
    3. 로컬 볼륨 리소스를 삭제합니다.

      $ oc delete localvolume -n local-storage --wait=true $LV
      Copy to Clipboard Toggle word wrap
    4. 나머지 PV 및 StorageClass가 있는 경우 삭제합니다.

      $ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m
      $ oc delete storageclass $SC --wait --timeout=5m
      Copy to Clipboard Toggle word wrap
    5. 해당 리소스의 스토리지 노드에서 아티팩트를 정리합니다.

      $ [[ ! -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
      Copy to Clipboard Toggle word wrap

      출력 예:

      Starting pod/node-xxx-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-yyy-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-zzz-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat