IBM Cloud Docs
删除 OpenShift 数据基金会

删除 OpenShift 数据基金会

查看以下主题以管理 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>"
      
      示例输出
      app    ocs-storagecluster-cephfs
      
    2. 除去使用 PVC 的 pod。 如果 pod 是部署的一部分,请除去该部署。
      oc delete pod <pod_name>
      
      oc delete deployment <deployment_name>
      
    3. 验证是否已除去 pod 或部署。
      oc get pods
      
      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 的文件中的以下脚本保存到本地计算机。
      #!/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
      
    2. 运行以下命令以除去指定路径上的任何文件或目录。 对您在 OCS 配置中使用的每个工作程序节点重复此步骤。
      rm -rvf /var/lib/rook /mnt/local-storage
      
      示例输出:
      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 附加组件

要从集群中除去 OpenShift Data Foundation 附加组件,请完成以下步骤。

如果要从集群中除去所有 ODF 资源和数据,请先 除去 CRD,然后再卸载该附加组件。

  1. 控制台选择要移除 OpenShift Data Foundation附加组件的仪表盘。
  2. 滚动到已安装的附加组件。
  3. 在 OpenShift Data Foundation 卡上,单击 操作 图标,然后单击 卸载

从 CLI 卸载 OpenShift Data Foundation 附加组件

您可以使用 控制台或 CLI 从集群中卸载 OpenShift Data 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 文档

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