记录一次k8s namespace 处于Terminating状态的处理方法
问题背景
使用k8s部署rook-ceph后,想要删除集群重新部署的,结果方法不对,导致rook-ceph命名空间状态一直处于Terminating,使用kubectl get all -n rook-ceph
命令显示已经没有资源,但仍无法删除。
尝试过的方法
- 删除时带上–force --grace-period=0参数 ,无法删除;
kubectl delete namespace rook-ceph --force --grace-period=0
- 使用
kubectl edit namespaces rook-ceph
将finalizer的value删除,显示命名空间成功被编辑,但是kubectl get ns
看到rook-ceph命名空间仍然存在,且状态依旧是Terminating;
参考文章:https://segmentfault.com/a/1190000016924414
最终成功的方法
NAMESPACE=rook-ceph
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
将上面的代码执行完成后,再使用kubectl get ns
命令,发现rook-ceph命名空间已经没了,最后别忘了把后台运行的kubectl proxy进程kill掉。
参考: