删除 OpenShift 数据基金会
查看以下主题以管理 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>"
app ocs-storagecluster-cephfs
- 除去使用 PVC 的 pod。 如果 pod 是部署的一部分,请除去该部署。
oc delete pod <pod_name>
oc delete deployment <deployment_name>
- 验证是否已除去 pod 或部署。
oc get pods
oc get deployments
- 列出当前安装要删除的 PVC 的所有 pod。 如果未返回任何 pod,那么您当前没有任何使用 PVC 的 pod。
- 可选删除 PVC。 删除 PVC 将从存储卷中删除应用程序数据。
oc delete pvc <pvc_name>
除去 ODF 定制资源
完成以下步骤,从群集中删除 ODF 资源。
以下步骤会导致数据丢失。 请先备份本地卷上的数据,然后再除去 ODF 部署。
从集群中删除 OcsCluster
定制资源时,将删除以下资源。 此外,需要访问本地卷上的数据的任何应用程序都可能迂到停机时间。 -ODF 驱动程序 pod。 -MON 和 OSD PVC。 -卷中的所有数据。 但是,如果使用 NooBaa 存储类创建 PVC,并且应用程序将数据写入支持存储,那么不会删除支持存储中的数据。
- 获取
OcsCluster
定制资源的名称。
名为oc get ocscluster
ocscluster-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 部署复制下列其中一个清除脚本。
- 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
- VPC 或具有动态供应磁盘的 Satellite 清除集群中剩余的 Kubernetes 资源。 将名为
- 运行
cleanup.sh
脚本。sh ./cleanup.sh
- **经典集群或具有本地磁盘的 Satellite 集群 运行清除脚本后,登录到每个工作程序节点并运行以下命令。
- 部署调试 pod 并运行
chroot /host
。oc debug node/<node_name> -- chroot /host
- 运行以下命令以除去指定路径上的任何文件或目录。 对您在 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'
- 部署调试 pod 并运行
- 可选: 经典集群或具有本地磁盘的 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
- 删除本地 PV。
oc delete pv <pv_name> <pv_name> <pv_name>
- 删除 PVC 和 PV 后,还需要从帐户中删除存储卷。 要在帐户中查找和除去未使用的存储卷,请参阅 为什么在删除集群后仍看到块存储设备的费用?。
卸载 OpenShift Data Foundation 附加组件
从控制台卸载 OpenShift Data Foundation 附加组件
要从集群中除去 OpenShift Data Foundation 附加组件,请完成以下步骤。
如果要从集群中除去所有 ODF 资源和数据,请先 除去 CRD,然后再卸载该附加组件。
- 从 控制台选择要移除 OpenShift Data Foundation附加组件的仪表盘。
- 滚动到已安装的附加组件。
- 在 OpenShift Data Foundation 卡上,单击 操作 图标,然后单击 卸载。
从 CLI 卸载 OpenShift Data Foundation 附加组件
您可以使用 控制台或 CLI 从集群中卸载 OpenShift Data 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 文档。
有关更多信息,请查看 常见故障诊断主题。