本文主要是介绍k8s删除namespace失败一直处于Terminating状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
获取Terminating状态的namespace
~ kubectl get namespace
NAME STATUS AGE
bluehelix Active 146d
broker Active 146d
cattle-fleet-clusters-system Active 87d
cert-manager Terminating 87d
查询要删除的namespace下是否还有资源
~ kubectl get all -n cert-manager
No resources found in cert-manager namespace.
导出为json
~ kubectl get ns cert-manager -o json > cert-manager.json
删除json文件中的finalize关键字字段
vim cert-manager.json
删除前 "spec": {"finalizers": ["kubernetes"]},删除后"spec": {"finalizers": []},
开启 proxy
~ kubectl proxy
Starting to serve on 127.0.0.1:8001
另起终端 指定刚才的json文件 执行以下命令进行删除操作
curl -k -H "Content-Type: application/json" -X PUT --data-binary @cert-manager.json http://127.0.0.1:8001/api/v1/namespaces/cert-manager/finalize
再次获取namespace状态,删除成功
~ kubectl get namespace
NAME STATUS AGE
bluehelix Active 146d
broker Active 146d
cattle-fleet-clusters-system Active 87d
如果仍然无法删除命名空间,请查看metadata部分是否存在finalizers字段,如果存在,需要删除
#查看finalizers
~ kubectl get namespace cert-manager -o json | jq '.metadata.finalizers'
["controller.cattle.io/namespace-auth"
]vim cert-manager.json
删除前 "metadata": {"finalizers": ["controller.cattle.io/namespace-auth"],删除后"metadata": {"finalizers": [ ],#执行命令
curl -k -H "Content-Type: application/json" -X PUT --data-binary @cert-manager.json http://127.0.0.1:8001/api/v1/namespaces/cert-manager/finalize
这篇关于k8s删除namespace失败一直处于Terminating状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!