k8s中清除已安装的rook-ceph集群

本文详细阐述了如何安全地删除Rook集群及其相关资源,包括Ceph依赖的对象、Operator、命名空间、CRDs等,以及遇到问题时的故障排除步骤。从删除顺序到检查残留资源,确保数据清理彻底并避免常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

删除依赖的资源

kubectl delete -f ../wordpress.yaml
kubectl delete -f ../mysql.yaml
kubectl delete -n rook-ceph cephblockpool replicapool
kubectl delete storageclass rook-ceph-block
kubectl delete -f csi/cephfs/kube-registry.yaml
kubectl delete storageclass csi-cephfs

备注:如果没有使用到以上资源对象或者外部没有关联storageclass,可以跳过执行,在删除 Rook operator和agent之前删除以上资源很重要,否则可能无法正确清理资源

删除 CephCluster CRD

kubectl -n rook-ceph patch cephcluster rook-ceph --type merge -p '{"spec":{"cleanupPolicy":{"confirmation":"yes-really-destroy-data"}}}'
kubectl -n rook-ceph delete cephcluster rook-ceph
kubectl -n rook-ceph get cephcluster

备注:如果在 Rook Cluster 上创建的资源没有被完全删除,清理作业可能不会启动

删除 Operator 及相关资源

kubectl delete -f operator.yaml
kubectl delete -f common.yaml
kubectl delete -f crds.yaml

备注:如果cleanupPolicy已应用 并且清理作业已在所有节点上完成,则集群拆除已成功。如果您跳过添加cleanupPolicy然后按照下面提到的手动步骤来拆除集群

删除主机上的数据

rm -rf /datarook/rook   //dataDirHostPath指定的路径
ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove %
rm -rf /dev/ceph-*
rm -rf /dev/mapper/ceph--*
DISK="/dev/sdc"
dd if=/dev/zero of="$DISK" bs=512k count=1
wipefs -af $DISK

故障排除

如果清理指令没有按照上面的顺序执行,或者你很难清理集群,这里有一些事情可以尝试。
清理集群最常见的问题是rook-ceph命名空间或集群 CRD 无限期地保持在terminating状态中。命名空间在其所有资源都被删除之前无法被删除,因此请查看哪些资源正在等待终止。

kubectl -n rook-ceph get pod
kubectl -n rook-ceph get cephcluster
for CRD in $(kubectl get crd -n rook-ceph | awk '/ceph.rook.io/ {print $1}'); do
    kubectl get -n rook-ceph "$CRD" -o name | \
    xargs -I {} kubectl patch -n rook-ceph {} --type merge -p '{"metadata":{"finalizers": [null]}}'
done
kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -n rook-ceph
kubectl -n rook-ceph patch configmap rook-ceph-mon-endpoints --type merge -p '{"metadata":{"finalizers": [null]}}'
kubectl -n rook-ceph patch secrets rook-ceph-mon --type merge -p '{"metadata":{"finalizers": [null]}}'

备注:删除之后可以通过etcdctl 查看资源是否彻底删除

ETCDCTL_API=3 etcdctl --cacert=/opt/kubernetes/ssl/ca.pem --cert=/opt/kubernetes/ssl/server.pem --key=/opt/kubernetes/ssl/server-key.pem --endpoints=https://192.168.1.92:2379,https://192.168.1.93:2379,https://192.168.1.94:2379 get /registry --prefix --keys-only=true | grep '/registry' |grep rook

详情请参考:ROOK官网

要在 Kubernetes 中安装 Rook Ceph,可以按照以下步骤进行: 1. 确保 Kubernetes 集群已经安装并运行。 2. 安装 Helm,可以从 Helm 官网下载最新版本的 Helm,然后按照官方文档安装。 3. 添加 Rook Helm 仓库: ``` helm repo add rook-release https://charts.rook.io/release ``` 4. 安装 Rook Ceph,使用以下命令: ``` helm install --namespace rook-ceph rook-release/rook-ceph ``` 这将在 rook-ceph 命名空间中安装 Rook Ceph。 5. 等待 Rook Ceph 安装完成。可以使用以下命令检查安装状态: ``` kubectl -n rook-ceph get pods ``` 等到所有 pod 的状态都为 Running 时,Rook Ceph 就已经安装完成了。 6. 配置 Ceph 集群,可以使用以下命令: ``` kubectl -n rook-ceph apply -f https://raw.githubusercontent.com/rook/rook/release-1.7/cluster/examples/kubernetes/ceph/common.yaml ``` 7. 等待 Ceph 集群配置完成。可以使用以下命令检查配置状态: ``` kubectl -n rook-ceph get cephclusters.ceph.rook.io ``` 等到状态为 HEALTH_OK 时,Ceph 集群就已经配置完成了。 8. 现在可以在 Kubernetes 中使用 Rook Ceph 了。例如,可以创建 PVC 来使用 Ceph 存储: ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: rook-ceph-block ``` 这将创建一个名为 my-pvc 的 PVC,并使用 rook-ceph-block 存储类来使用 Ceph 存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值