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

     

H1
尝试过的方法
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;

     

H1
最终成功的方法
</>
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掉。