移除 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-vpcOcsCluster 自訂資源的範例指令。
    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 說明

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