记录一次k8s namespace 处于Terminating状态的处理方法

 

问题背景

使用k8s部署rook-ceph后,想要删除集群重新部署的,结果方法不对,导致rook-ceph命名空间状态一直处于Terminating,使用kubectl get all -n rook-ceph命令显示已经没有资源,但仍无法删除。

 

尝试过的方法

1.删除时带上–force --grace-period=0参数 ,无法删除;
kubectl delete namespace rook-ceph --force --grace-period=0
2.使用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掉。
参考:
https://stackoverflow.com/questions/52369247/namespace-stucked-as-terminating-how-i-removed-it
https://github.com/kubernetes/kubernetes/issues/60807#issuecomment-466278490

 

转载:https://blog.csdn.net/fengwuxichen/article/details/87877214###

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐