3.4. 卸载 OpenShift Data Foundation
3.4.1. 从外部存储系统卸载 OpenShift Data Foundation
使用本节中的步骤卸载 OpenShift Data Foundation。卸载 OpenShift Data Foundation 不会从外部集群中删除 RBD 池,或卸载外部 Red Hat Ceph Storage 集群。
卸载注解
Storage Cluster 上的注解用于更改卸载过程的行为。要定义卸载行为,在存储集群中引入了以下两个注解:
-
uninstall.ocs.openshift.io/cleanup-policy: delete
-
uninstall.ocs.openshift.io/mode: graceful
uninstall.ocs.openshift.io/cleanup-policy
不适用于外部模式。
下表提供了有关可用于这些注解的不同值的信息:
注解 | 值 | 默认 | 行为 |
---|---|---|---|
cleanup-policy | delete | 是 |
Rook 清理物理驱动器和 |
cleanup-policy | retain | 否 |
Rook 不会清理物理驱动器和 |
模式 | graceful | 是 | Rook 和 NooBaa 暂停卸载过程,直到管理员/用户移除 PVC 和 OBC |
模式 | forced | 否 | rook 和 NooBaa 会在卸载过程中继续进行,即使 PVC/OBCs 使用 Rook 和 NooBaa 置备 |
您可以通过使用以下命令编辑注解值来更改卸载模式:
$ oc annotate storagecluster ocs-external-storagecluster -n openshift-storage uninstall.ocs.openshift.io/mode="forced" --overwrite storagecluster.ocs.openshift.io/ocs-external-storagecluster annotated
先决条件
- 确保 OpenShift Data Foundation 集群处于健康状态。当因为资源或节点不足而导致部分 pod 无法成功终止时,卸载过程可能会失败。如果集群处于不健康状态,请在卸载 OpenShift Data Foundation 前联系红帽客户支持。
- 使用 OpenShift Data Foundation 提供的存储类,确保应用程序不使用持久性卷声明 (PVC) 或对象存储桶声明 (OBC)。
流程
删除使用 OpenShift Data Foundation 的卷快照。
列出所有命名空间中的卷快照
$ oc get volumesnapshot --all-namespaces
从上一命令的输出中,识别和删除使用 OpenShift Data Foundation 的卷快照。
$ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
删除使用 OpenShift Data Foundation 的 PVC 和 OBC。
在默认的卸载模式 (graceful) 中,卸载程序会等待所有使用 OpenShift Data Foundation 的 PVC 和 OBC 被删除。
如果要事先删除 PVC 来删除存储集群,您可以将卸载模式注解设置为"强制"并跳过此步骤。这样做会导致系统中出现孤立 PVC 和 OBC。
使用 OpenShift Data Foundation 删除 OpenShift Container Platform 监控堆栈 PVC。
使用 OpenShift Data Foundation 删除 OpenShift Container Platform Registry PVC。
从 OpenShift Data Foundation 中删除 OpenShift Container Platform registry
使用 OpenShift Data Foundation 删除 OpenShift Container Platform 日志 PVC。
删除使用 OpenShift Data Foundation 置备的其他 PVC 和 OBC。
下面是一个示例脚本,用于标识使用 OpenShift Data Foundation 置备的 PVC 和 OBC。该脚本将忽略 OpenShift Data Foundation 内部使用的 PVC 和 OBC。
#!/bin/bash RBD_PROVISIONER="openshift-storage.rbd.csi.ceph.com" CEPHFS_PROVISIONER="openshift-storage.cephfs.csi.ceph.com" NOOBAA_PROVISIONER="openshift-storage.noobaa.io/obc" RGW_PROVISIONER="openshift-storage.ceph.rook.io/bucket" NOOBAA_DB_PVC="noobaa-db" NOOBAA_BACKINGSTORE_PVC="noobaa-default-backing-store-noobaa-pvc" # Find all the OCS StorageClasses OCS_STORAGECLASSES=$(oc get storageclasses | grep -e "$RBD_PROVISIONER" -e "$CEPHFS_PROVISIONER" -e "$NOOBAA_PROVISIONER" -e "$RGW_PROVISIONER" | awk '{print $1}') # List PVCs in each of the StorageClasses for SC in $OCS_STORAGECLASSES do echo "======================================================================" echo "$SC StorageClass PVCs and OBCs" echo "======================================================================" oc get pvc --all-namespaces --no-headers 2>/dev/null | grep $SC | grep -v -e "$NOOBAA_DB_PVC" -e "$NOOBAA_BACKINGSTORE_PVC" oc get obc --all-namespaces --no-headers 2>/dev/null | grep $SC echo done
删除 OBC。
$ oc delete obc <obc name> -n <project name>
删除 PVC。
$ oc delete pvc <pvc name> -n <project-name>
确保您已删除了集群中创建的自定义后备存储、存储桶类等。
删除 Storage Cluster 对象并等待相关资源被删除。
$ oc delete -n openshift-storage storagesystem --all --wait=true
删除命名空间并等待删除完成。如果
openshift-storage
是活跃的项目,则需要切换到另一个项目。例如:
$ oc project default $ oc delete project openshift-storage --wait=true --timeout=5m
如果以下命令返回了
NotFound
错误,则该项目将被删除。$ oc get project openshift-storage
注意卸载 OpenShift Data Foundation 时,如果没有完全删除命名空间并处于
Terminating
状态,请执行 故障排除和删除 Uninstall 过程中剩余的资源 的步骤,以识别阻塞命名空间的对象。确认已删除使用 OpenShift Data Foundation 置备的所有 PV。如果有任何 PV 处于
Released
状态,请将其删除。$ oc get pv $ oc delete pv <pv name>
删除
CustomResourceDefinitions
。$ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io storagesystems.odf.openshift.io --wait=true --timeout=5m
确保完全卸载 OpenShift Data Foundation:
- 在 OpenShift Container Platform Web 控制台中点 Storage。
- 验证 OpenShift Data Foundation 是否不再出现在 Storage 下。