移除 OpenShift Data Foundation

請檢視以下主題以管理您的 OpenShift Data Foundation 部署。

從應用程式移除 ODF

若要從應用程式移除 ODF,您可以刪除應用程式或部署及對應的 PVC。

如果您想要完全移除 ODF 及所有資料,則可以 移除儲存空間叢集。

  1. 列出 PVC,並記下 PVC 名稱及您要移除的對應 PV。
    oc get pvc
    
  2. 移除任何裝載 PVC 的 Pod。
    1. 列出目前裝載您要刪除之 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
        ```
    
  3. ( 可選 )刪除 PVC。 刪除 PVC 會從儲存空間磁區中刪除應用程式資料。
    oc delete pvc <pvc_name>
    

移除 ODF 自訂資源

請依照以下步驟,從您的叢集中移除 ODF 資源。

下列步驟會導致資料流失。 在移除 ODF 部署之前,請先備份本端磁區上的資料。

當您從叢集中刪除 OcsCluster 自訂資源時,會刪除下列資源。 此外,任何需要存取本端磁區上資料的應用程式可能會遇到關閉時間。 -ODF 驅動程式 Pod。 -門和 OSD PVC。 -磁區中的所有資料。 不過,如果您使用 NooBaa 儲存空間類別建立 PVC,並且您的應用程式將資料寫入後端儲存庫,則不會刪除後端儲存庫中的資料。

  1. 取得 OcsCluster 自訂資源的名稱。
    oc get ocscluster
    
    稱為 ocscluster-vpc 之自訂資源的範例輸出。
    NAME             AGE
    ocscluster-vpc   4s
    
  2. 刪除 OcsCluster 自訂資源。 請將 <ocscluster_name> 替換為您的自訂資源名稱。
    oc delete ocscluster <ocscluster_name>
    
    稱為 ocscluster-vpc 的 OcsCluster 自訂資源的範例指令。
    oc delete ocscluster ocscluster-vpc
    
  3. 刪除您所建立的任何 PVC。
    oc get pvc
    
  4. 選用 如果您不想重新安裝 ODF,則可以 從叢集移除 ODF 附加程式。

清除 ODF

  1. 根據您的 ODF 部署,複製下列其中一個清除 Script。
    • VPC 或 Satellite 搭配動態佈建的磁碟 清除叢集裡的其餘 Kubernetes 資源。 將下列 Script 儲存在本端機器上稱為 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 資源。 將下列 Script 儲存在本端機器上稱為 `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
        ```
    
  2. 執行 cleanup.sh 腳本。
    sh ./cleanup.sh
    
  3. **標準叢集或 Satellite 具有本端磁碟的叢集 執行清理 Script 之後,登入每一個工作者節點並執行下列指令。
    1. 部署除錯 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'
        ```
    
  4. 選用: 具有本端磁碟的標準叢集或 Satellite 叢集 如果您不再想要使用配置中使用的本端磁區,可以從叢集中刪除它們。 列出本端 PV。
    oc get pv
    
    輸出範例:
    local-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
    
  5. 刪除本端 PV。
    oc delete pv <pv_name> <pv_name> <pv_name>
    
  6. 刪除 PVC 及 PV 之後,您還需要從帳戶中刪除儲存磁區。 若要尋找並移除帳戶中未用的儲存空間磁區,請參閱 為何在刪除叢集之後仍會看到區塊儲存裝置的費用?。

解除安裝 OpenShift Data Foundation 附加程式

從主控台解除安裝 OpenShift Data Foundation 附加程式

若要從叢集移除 Data OpenShift Foundation 附加元件,請完成以下步驟。

如果您想要從叢集移除所有 ODF 資源及資料,請在解除安裝附加程式之前 移除 CRD。

  1. 從 主控台,選擇要移除 OpenShift Data Foundation 附加元件的群集。
  2. 捲動至您已安裝的附加元件。
  3. 在 OpenShift Data Foundation 卡上,按一下 動作 圖示,然後按一下 解除安裝。

從 CLI 解除安裝 OpenShift Data Foundation 附加程式

您可以 透過控制台或命令列介面從叢集卸載 Data OpenShift Foundation 附加元件。

如果您想要從叢集移除所有 ODF 資源及資料,請在解除安裝附加程式之前 移除 CRD。

  1. 解除安裝附加程式。
    ibmcloud oc cluster addon disable openshift-container-storage -c <cluster_name>
    
  2. 請確認該附加元件已移除。
    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 說明。

如需相關資訊,請檢閱 一般疑難排解主題。