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

详情请参考:ROOK官网

你可能感兴趣的:(kubernetes,云原生)