Kubernetes 无法删除命名空间
2021-07-09 by dongnan
问题描述
使用 kubectl
命令无法删除 k8s
集群中的 openebs
命名空间,状态一直为 Terminating
:
# 输入命令
kubectl get ns
NAME STATUS AGE
calico-system Active 17h
default Active 17h
kube-node-lease Active 17h
kube-public Active 17h
kube-system Active 17h
openebs Terminating 34m # 长期Terminating
tigera-operator Active 17h
环境描述
# 这个k8s集群由一个`master`管理节点、三个`worker`计算节点组成:
主机: 4c/8G/100GB
OS: Ubuntu Server 20.04
CRI: Docker 20.10.5
Kubernetes: v1.21.x
网络: Master与Woker节点均在同一个局域网内。
解决方法
参考 在 github
上 deleting namespace stuck at "Terminating" state
中的方法:
# 输入命令
kubectl get namespaces openebs -o json \
| tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
| kubectl replace --raw /api/v1/namespaces/openebs/finalize -f -
注意,命令行中的 openebs
关键字,替换成你需要的。
小结
虽然可以使用API方式强制删除NameSpace
命名空间,但需要注意的是之所以出现Terminating
状态说明这个NameSpace
中应该有某些资源没有删除干净,
正确方式是先删除命名空间
中的资源然后在删除这个命名空间
。
参考
https://github.com/kubernetes/kubernetes/issues/60807