K8S如何强制删除namespace

最近在k8s上通过Prometheus Operator部署了一套prometheus监控系统,现在想删除,但是其命名空间monitoring却一直无法删除处于Terminaling状态

 经过查阅资料问题应该是monitoring这个namespace下应该还有其他资源没有删除干净。

下面是删除monitoring 这个namespace的方法:

先运行

kubectl get namespace monitoring -o json > tmp.json

拿到当前namespace描述,然后打开tmp.json,删除其中的spec字段。

将spec里的内容删除干净,保存退出:

 然后新开一个窗口运行kubectl proxy跑一个API代理在本地的8081端口

  # kubectl proxy --port=8081

 

 最后执行命令:

# curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8081/api/v1/namespaces/monitoring/finalize

然后再看一下命名空间,发现monitoring已经被删除了。

 

经常操作 Kubernetes 集群的同学肯定对 finalizers 字段不陌生,每当删除 namespace 或 pod 等一些 Kubernetes 资源时,有时资源状态会卡在 Terminating,很长时间无法删除,甚至有时增加 --force flag 之后还是无法正常删除。这时就需要 edit 该资源,将 finalizers 字段设置为 [],之后 Kubernetes 资源就正常删除了。

 

posted @ 2021-01-05 15:15  流年晕开时光  阅读(1284)  评论(0编辑  收藏  举报