问题现象
k8s集群要清理某个名空间,把该名空间下的资源全部删除后,删除名空间,一直处于Terminating状态,无法完全清理掉。
如何处理
为什么要记录下这个处理的步骤,经过查询资料,网上也有各种各样的方法,但能够有效解决的并不好找。
方式1:强制删除
bash
kubectl delete ns ingress-nginx --force
这种方式尝试后对我没有用,仍然还是没有清理掉。
方式2:api请求
1. 导出namespace的json文件
bash
kubectl get ns ingress-nginx -o json > ingress-nginx-ns.json
2. 修改json文件并发送请求API
bash
编辑test.json文件,确保spec中内容为空
"spec": {
"finalizers": [ #########
"kubernetes" ######### 删除这三行内容,告知k8s要删除的ns中内容为空
] #########
},
将空ns通过调用k8s的api接口覆盖掉原来的ns
curl -k \
> -H "Content-Type: application/json" \
> -X PUT \
> --data-binary @ingress-nginx-ns.json \
>http://192.168.100.100:6443/api/v1/namespaces/ingress-nginx/finalize
最后再检查名空间ingress-nginx是否清理即可。