跳转至

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节点均在同一个局域网内。

解决方法

参考 在 githubdeleting 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

回到页面顶部