解决k8s删除名称空间无法强制删除的问题

问题起因:删除k8s名称空间的时候(此时名称空间下还有很多pod)一直删不掉,被我强行ctrl +c了,
问题表象:然后就出现下面这悲催的一幕了,两个名称空间一直处于Terminating了

[root@master02 ~]# kubectl get ns -o wide
NAME               STATUS        AGE
calico-apiserver   Active        3d2h
calico-system      Active        3d3h
default            Active        3d3h
ingress-nginx      Terminating   52m
kube-node-lease    Active        3d3h
kube-public        Active        3d3h
kube-system        Active        3d3h
metallb-system     Terminating   152m
tigera-operator    Active        3d3h
wordpress          Active        2d1h

因为分析不出来原因,就去百度了,尝试了强制删除 kubectl delete namespace [namespace] --force --grace-period=0 和通过接口删除不怎么好使,后面就找到了下面的方案
问题解决:运行以下命令,替换一下删不掉的名称空间即可,如我的:metallb-system ingress-nginx

[root@k8s-master1 ~]# kubectl get namespace metallb-system -o json \
> | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
> | kubectl replace --raw /api/v1/namespaces/metallb-system/finalize -f -

[root@master02 ~]# kubectl get ns
NAME               STATUS   AGE
calico-apiserver   Active   3d3h
calico-system      Active   3d3h
default            Active   3d4h
kube-node-lease    Active   3d4h
kube-public        Active   3d4h
kube-system        Active   3d4h
tigera-operator    Active   3d3h
wordpress          Active   2d2h

自此两个名称空间删除完毕,因为时间紧,只是短暂记下来,以后有机会在探索那条命令啥意思。
总得来说,删除名称空间,一定要把名称空间下资源删干净,在删名称空间,也别随便终止了,自己测试环境瞎搞没关系,就怕上产环境大家也这么玩,最后送大家一句话,且删且珍惜!

你可能感兴趣的:(kubernetes,容器,云原生)