卸载 OpenShift 数据基础

请参阅以下主题以管理您的 OpenShift 数据基础架构部署。

从应用程序中除去 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。 -MON 和 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 部署复制下列其中一个清除脚本。
    • VPC 或具有动态供应磁盘的 Satellite 清除集群中剩余的 Kubernetes 资源。 将名为 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 资源。 将名为 `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 集群 运行清除脚本后,登录到每个工作程序节点并运行以下命令。
    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

有关更多信息,请查看 常见故障诊断主题