翻墙被狗咬
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

K8S中namespaces一直处于Terminating解决办法

前言


今天在Rancher 2.0测试部署项目的时候发现一个用kubectl创建的namespaces一直处于Removing状态

0d998bc4651f6fd369c0003196851247

后台检查这个namespaces一直报这个错:

Error from server (Conflict): Operation cannot be fulfilled on namespaces "gitlab-managed-apps": The system is ensuring all content is removed from this namespace.  Upon completion, this namespace will automatically be purged by the system.

刚开始根据日志以为是有资源没有被正确删除,使用以下命令检查:

kubectl get pod -n gitlab-managed-apps

kubectl get services -n gitlab-managed-apps

kubectl get secret -n gitlab-managed-apps

...........

都提示提示没有资源。

没办法了 只好动用大招 强制删除:

kubectl edit namespaces gitlab-managed-apps

删掉finalizers下面的所有类容:

937d3ab4be45c449bdb4c54048c80e54

保存之后再次查看。发现该类容又回来了。

最后的终极解决办法:


1、导出yml到本地 kubectl get namespace XXXXX -o json > tmp.json

2、设置tmp.json 中的 finalizers 为空list

3、用postman 带上已经登录RancherUI的 Cookie 设置Headers中Content-Type: application/json 设置Body——> binary 把tmp.json添加进去。然后以PUT的方式向https://XXXXXXX.com/k8s/clusters/local/api/v1/namespaces/XXXXXX/finalize 这个API请求。


以上完毕!

解决办法参考自:

GitHub Issues