苏打

删除K8s Namespace时卡在Terminating状态解决思路

2019-12-10 · 1 min read
kubernetes 问题记录

在k8s集群删除 namespace 时,k8s 会先清理该 namesoace 下的所有资源,清理完成后才会删除集群namespace,所以当集群 namespace 下资源比较多时,这个删除过程就会比较长。但是最近发现 namespace下资源已经都清理了,可是namespace一直卡在Terminating状态,无法删除。发现这种情况可以使用两种方式删除。

第一种方法是使用 --force 强制删除,比如删除命名空间 test,执行如下命令

kubectl delete ns test --force --grace-period=0

如果执行这个命令依然无法删除,那可以使用第二种方法。第二种方法先获取命名空间的信息,并保存到 tmp.json 文件

kubectl get ns test -ojson > tmp.json

然后删除tmp.json里面的 finalizers 里面的 kubernetes,执行如下,访问 kube-server 强制删除命名空间

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/test/finalize