移除 OpenShift Data Foundation
請檢視以下主題以管理您的 OpenShift Data Foundation 部署。
從應用程式移除 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。 -門和 OSD PVC。 -磁區中的所有資料。 不過,如果您使用 NooBaa 儲存空間類別建立 PVC,並且您的應用程式將資料寫入後端儲存庫,則不會刪除後端儲存庫中的資料。
- 取得
OcsCluster自訂資源的名稱。
稱為oc get ocsclusterocscluster-vpc之自訂資源的範例輸出。NAME AGE ocscluster-vpc 4s - 刪除
OcsCluster自訂資源。 請將<ocscluster_name>替換為您的自訂資源名稱。
稱為oc delete ocscluster <ocscluster_name>ocscluster-vpc的OcsCluster自訂資源的範例指令。oc delete ocscluster ocscluster-vpc - 刪除您所建立的任何 PVC。
oc get pvc - 選用 如果您不想重新安裝 ODF,則可以 從叢集移除 ODF 附加程式。
清除 ODF
- 根據您的 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 ``` - VPC 或 Satellite 搭配動態佈建的磁碟 清除叢集裡的其餘 Kubernetes 資源。 將下列 Script 儲存在本端機器上稱為
- 執行
cleanup.sh腳本。sh ./cleanup.sh - **標準叢集或 Satellite 具有本端磁碟的叢集 執行清理 Script 之後,登入每一個工作者節點並執行下列指令。
- 部署除錯 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 附加程式
若要從叢集移除 Data OpenShift Foundation 附加元件,請完成以下步驟。
如果您想要從叢集移除所有 ODF 資源及資料,請在解除安裝附加程式之前 移除 CRD。
- 從 主控台,選擇要移除 OpenShift Data Foundation 附加元件的群集。
- 捲動至您已安裝的附加元件。
- 在 OpenShift Data Foundation 卡上,按一下 動作 圖示,然後按一下 解除安裝。
從 CLI 解除安裝 OpenShift Data Foundation 附加程式
您可以 透過控制台或命令列介面從叢集卸載 Data OpenShift 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 說明。
如需相關資訊,請檢閱 一般疑難排解主題。