强制删除 k8s terminating 状态命名空间
Table of Contents
当删除一个命名空间时,未完全删除时中断了删除操作,这时命名空间处于 terminating 状态。一种解决方式是,再次删除,命令后加上 --force
选项,如:
kubectl delete ns <terminating-namespace> --force
但往往还是不行,这时需要使用接口删除这个命名空间。
首先,将 terminating 状态的命名空间信息导出到 json 文件:
kubectl get ns <terminating-namespace> -o json > temp.json
这时当前目录下会有一个 tmp.json 的文件,编辑该文件,将 finalizers
的值置空(置为空数组)。
其次,打开 proxy:
kubectl proxy
打开一个新的命令行终端,在 temp.json 文件所在位置调下面的接口:
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json http://127.0.0.1:8001/api/v1/namespaces/<terminating-namespace>/finalize
其中 <terminating-namespace>
改为需要删除的 terminating 状态的命名空间的名字。
最后验证下:
kubectl get ns
不会再有这个 terminating 状态的命名空间了。