OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
2.4. 以内部模式卸载 OpenShift Container Storage
2.4.1. 在内部模式中卸载 OpenShift Container Storage 复制链接链接已复制到粘贴板!
使用本节中的步骤卸载 OpenShift Container Storage。
卸载注解
Storage Cluster 上的注解用于更改卸载过程的行为。要定义卸载行为,在存储集群中引入了以下两个注解:
-
uninstall.ocs.openshift.io/cleanup-policy: delete
-
uninstall.ocs.openshift.io/mode: graceful
下表提供了有关可用于这些注解的不同值的信息:
注解 | 值 | 默认 | 行为 |
---|---|---|---|
cleanup-policy | delete | 是 |
Rook 清理物理驱动器和 |
cleanup-policy | retain | 否 |
Rook 不会清理物理驱动器和 |
mode | graceful | 是 | Rook 和 NooBaa 暂停卸载过程,直到管理员/用户移除 PVC 和 OBC |
mode | forced | 否 | Rook 和 NooBaa 即使使用 Rook 和 NooBaa 置备的 PVC/OBC 分别存在,也会继续卸载。 |
您可以通过使用以下命令编辑注解值来更改清理策略或卸载模式:
oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
先决条件
- 确保 OpenShift Container Storage 集群处于健康状态。当因为资源或节点不足而导致部分 pod 无法成功终止时,卸载过程可能会失败。如果集群处于不健康状态,请在卸载 OpenShift Container Storage 前联络红帽客户支持。
- 使用 OpenShift Container Storage 提供的存储类,确保应用程序不使用持久性卷声明 (PVC) 或对象存储桶声明 (OBC)。
- 如果管理员创建了任何自定义资源(如自定义存储类、cephblockpools),则管理员必须在移除消耗这些资源后将它们删除。
流程
删除使用 OpenShift Container Storage 的卷快照。
列出来自所有命名空间的卷快照。
oc get volumesnapshot --all-namespaces
$ oc get volumesnapshot --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上一命令的输出中,识别和删除使用 OpenShift Container Storage 的卷快照。
oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
$ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除使用 OpenShift Container Storage 的 PVC 和 OBC。
在默认的卸载模式 (graceful) 中,卸载程序会等待所有使用 OpenShift Container Storage 的 PVC 和 OBC 被删除。
如果要在不事先删除 PVC 的情况下删除存储集群,您可以将卸载模式注解设置为
强制
并跳过这一步。这样做会导致系统处于孤立的 PVC 和 OBC。使用 OpenShift Container Storage 删除 OpenShift Container Platform 监控堆栈 PVC。
如需更多信息,请参阅 第 2.4.1.1 节 “从 OpenShift Container Storage 中删除监控堆栈”。
使用 OpenShift Container Storage 删除 OpenShift Container Platform Registry PVC。
如需更多信息,请参阅 第 2.4.1.2 节 “从 OpenShift Container Storage 中删除 OpenShift Container Platform registry”。
使用 OpenShift Container Storage 删除 OpenShift Container Platform 日志 PVC。
如需更多信息,请参阅 第 2.4.1.3 节 “从 OpenShift Container Storage 中删除集群日志记录 Operator”。
删除使用 OpenShift Container Storage 置备的其他 PVC 和 OBC。
以下示例是示例脚本,用于识别使用 OpenShift Container Storage 置备的 PVC 和 OBC。该脚本忽略 Openshift Container Storage 内部使用的 PVC。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意云平台省略
RGW_PROVISIONER
。删除 OBC。
oc delete obc <obc name> -n <project name>
$ oc delete obc <obc name> -n <project name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 PVC。
oc delete pvc <pvc name> -n <project-name>
$ oc delete pvc <pvc name> -n <project-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保您已删除了集群中创建的任何自定义后备存储、存储桶类等。
删除 Storage Cluster 对象并等待相关资源被删除。
oc delete -n openshift-storage storagecluster --all --wait=true
$ oc delete -n openshift-storage storagecluster --all --wait=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
uninstall.ocs.openshift.io/cleanup-policy
是否已设置为delete
(默认),并确保其状态为Completed
。oc get pods -n openshift-storage | grep -i cleanup
$ oc get pods -n openshift-storage | grep -i cleanup NAME READY STATUS RESTARTS AGE cluster-cleanup-job-<xx> 0/1 Completed 0 8m35s cluster-cleanup-job-<yy> 0/1 Completed 0 8m35s cluster-cleanup-job-<zz> 0/1 Completed 0 8m35s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认目录
/var/lib/rook
现在为空。只有uninstall.ocs.openshift.io/cleanup-policy
注解设置为delete
(默认)时,此目录才为空。for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; done
$ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在安装时启用了加密,在所有 OpenShift Container Storage 节点上的 OSD 设备中删除
dm-crypt
管理的device-mapper
映射。创建
debug
pod 和chroot
到存储节点上的主机。oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取设备名称并记录 OpenShift Container Storage 设备。
dmsetup ls
$ dmsetup ls ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除映射的设备。
cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果上述命令因为权限不足而卡住,请运行以下命令:
-
按
CTRL+Z
退出上述命令。 查找阻塞的进程的 PID。
ps -ef | grep crypt
$ ps -ef | grep crypt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
kill
命令终止进程。kill -9 <PID>
$ kill -9 <PID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证设备名称是否已移除。
dmsetup ls
$ dmsetup ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
按
删除命名空间并等待删除完成。如果
openshift-storage
是活跃的项目,则需要切换到另一个项目。例如:
oc project default oc delete project openshift-storage --wait=true --timeout=5m
$ oc project default $ oc delete project openshift-storage --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果以下命令返回 NotFound 错误,则项目被删除。
oc get project openshift-storage
$ oc get project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意卸载 OpenShift Container Storage 时,如果没有完全删除
命名空间
并处于Terminating
状态,请执行 故障排除和删除 Uninstall 过程中剩余的资源 的步骤,以识别阻塞命名空间的对象。取消标记存储节点。
oc label nodes --all cluster.ocs.openshift.io/openshift-storage- oc label nodes --all topology.rook.io/rack-
$ oc label nodes --all cluster.ocs.openshift.io/openshift-storage- $ oc label nodes --all topology.rook.io/rack-
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果节点有污点,则删除 OpenShift Container Storage 污点。
oc adm taint nodes --all node.ocs.openshift.io/storage-
$ oc adm taint nodes --all node.ocs.openshift.io/storage-
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认已删除使用 OpenShift Container Storage 置备的所有 PV。如果有任何 PV 处于
Released
状态,请将其删除。oc get pv oc delete pv <pv name>
$ oc get pv $ oc delete pv <pv name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 Multicloud 对象网关存储类。
oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
$ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
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 --wait=true --timeout=5m
$ 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 --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:要确保永久删除 vault 密钥,您需要手动删除与 vault 密钥关联的元数据。
注意只有在 Vault Key/Value(KV)机密引擎 API 时才执行此步骤,使用密钥管理系统(KMS)版本 2 进行集群范围加密,因为 vault 密钥被标记为删除并在 OpenShift Container Storage 卸载过程中永久删除。如果需要,您可以在以后恢复它。
列出密码库中的密钥。
vault kv list <backend_path>
$ vault kv list <backend_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backend_path>
是存储加密密钥的密码库中的路径。
例如:
vault kv list kv-v2
$ vault kv list kv-v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
列出与 vault 密钥关联的元数据。
vault kv get kv-v2/<key>
$ vault kv get kv-v2/<key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Multicloud Object Gateway(MCG)密钥:
vault kv get kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
$ vault kv get kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <key>
是加密密钥。
例如:
vault kv get kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
$ vault kv get kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除元数据。
vault kv metadata delete kv-v2/<key>
$ vault kv metadata delete kv-v2/<key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 MCG 密钥:
vault kv metadata delete kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
$ vault kv metadata delete kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <key>
是加密密钥。
例如:
vault kv metadata delete kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
$ vault kv metadata delete kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Success! Data deleted (if it existed) at: kv-v2/metadata/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
Success! Data deleted (if it existed) at: kv-v2/metadata/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 重复这些步骤,以删除与所有 vault 密钥关联的元数据。
在 OpenShift Container Platform Web 控制台中,确保完全卸载 OpenShift Container Storage,
- 点 Storage。
- 验证 Overview 不再显示在 Storage 下。
2.4.1.1. 从 OpenShift Container Storage 中删除监控堆栈 复制链接链接已复制到粘贴板!
使用本节清理 OpenShift Container Storage 中的监控堆栈。
在配置监控堆栈时创建的 PVC 位于 openshift-monitoring
命名空间中。
先决条件
PVC 被配置为使用 OpenShift Container Platform 监控堆栈。
如需更多信息,请参阅 配置监控堆栈。
流程
列出当前在
openshift-monitoring
命名空间中运行的 pod 和 PVC。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑监控
configmap
。oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除引用 OpenShift Container Storage 存储类的所有
config
部分,如下例所示并保存。编辑前
Expand Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑后
Expand Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
alertmanagerMain
和prometheusK8s
监控组件使用 OpenShift Container Storage PVC。删除相关的 PVC。请确定删除所有消耗存储类的 PVC。
oc delete -n openshift-monitoring pvc <pvc-name> --wait=true --timeout=5m
$ oc delete -n openshift-monitoring pvc <pvc-name> --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要从 OpenShift Container Storage 清理 OpenShift Container Platform registry,请按照以下步骤执行。
如果要配置其他存储,请参阅 镜像 registry
作为配置 OpenShift Container Platform registry 的一部分而创建的 PVC 位于 openshift-image-registry
命名空间中。
先决条件
- 镜像 registry 必须配置为使用 OpenShift Container Storage PVC。
流程
编辑
configs.imageregistry.operator.openshift.io
对象,并删除 storage 部分中的内容。oc edit configs.imageregistry.operator.openshift.io
$ oc edit configs.imageregistry.operator.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 编辑前
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑后
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,PVC 称为
registry-cephfs-rwx-pvc
,现在可以安全地删除。删除 PVC。
oc delete pvc <pvc-name> -n openshift-image-registry --wait=true --timeout=5m
$ oc delete pvc <pvc-name> -n openshift-image-registry --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要从 OpenShift Container Storage 清理集群日志记录 Operator,请按照以下步骤执行。
作为配置集群日志记录 Operator 的一部分而创建的 PVC 位于 openshift-logging
命名空间中。
先决条件
- 集群日志记录实例必须配置为使用 OpenShift Container Storage PVC。
流程
删除命名空间中的
ClusterLogging
实例。oc delete clusterlogging instance -n openshift-logging --wait=true --timeout=5m
$ oc delete clusterlogging instance -n openshift-logging --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-logging
命名空间中的 PVC 现在可以安全地删除。删除 PVC。
oc delete pvc <pvc-name> -n openshift-logging --wait=true --timeout=5m
$ oc delete pvc <pvc-name> -n openshift-logging --wait=true --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow