kubernetes删除ns异常状态为:Terminating
用kubernetes-API删除
1、首先,获取要删除 NameSpace 的 JSON 文件:
替换其中的 <terminating-namespace> 为实际 namespace kubectl get namespace <terminating-namespace> -o json >tmp.json [root@master01 ~]# kubectl get namespace kuboard -o json > tmp.json
2、编辑上一步导出的 json 文件,去除 spec.finalizers 配置
[root@master01 ~]# vim tmp.json ···· "spec": { "finalizers": [] ····
3、打开另一个ssh窗口运行kubectl proxy
开启代理
[root@master01 ~]# kubectl proxy Starting to serve on 127.0.0.1:8001
4、删除 namespace
其中 tmp.json 为第一步中导出的 json 文件, 需替换为实际的 namespace
$ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/ /finalize
[root@master01 ~]# kubectl get ns NAME STATUS AGE default Active 39h kube-flannel Active 39h kube-node-lease Active 39h kube-public Active 39h kube-system Active 39h kuboard Terminating 36h [root@master01 ~]# [root@master01 ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/kuboard/finalize }[root@master01 ~]# kubectl get ns NAME STATUS AGE default Active 39h kube-flannel Active 39h kube-node-lease Active 39h kube-public Active 39h kube-system Active 39h [root@master01 ~]#
完成对namespace状态Terminating的删除