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

删除依赖的资源

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

【kubernetes|k8s中清除已安装的rook-ceph集群】详情请参考:ROOK官网

    推荐阅读