k8s 删除namespace 失败 一直处于Terminating状态
6. 另起终端指定刚才的json文件 执行以下命令进行删除操作。8. control+c 退出 kubectlproxy即可。1. 获取Terminating状态的namespace。4. 删除json文件中的finalize关键字字段。2. 查询要删除的namespace下是否还有资源。7. 再次获取namespace状态,删除成功。5. 开启 proxy。3. 导出为json。
·
普通删除方法没用,使用以下解决方法
1. 获取Terminating状态的namespace
jack@jack ~ % kubectl get namespace
NAME STATUS AGE
bluehelix Active 146d
broker Active 146d
cattle-fleet-clusters-system Active 87d
cert-manager Terminating 87d
2. 查询要删除的namespace下是否还有资源
jack@jack ~ % kubectl get all -n cert-manager
No resources found in cert-manager namespace.
3. 导出为json
kubectl get ns cert-manager -o json > cert-manager.json
4. 删除json文件中的finalize关键字字段
删除前
"spec": {
"finalizers": [
"kubernetes"
]
},
删除后
"spec": {
"finalizers": []
},
5. 开启 proxy
jack@jack ~ % kubectl proxy
Starting to serve on 127.0.0.1:8001
6. 另起终端 指定刚才的json文件 执行以下命令进行删除操作
curl -k -H "Content-Type: application/json" -X PUT --data-binary @cert-manager.json http://127.0.0.1:8001/api/v1/namespaces/{Terminating_namespace}/finalize
7. 再次获取namespace状态,删除成功
jack@jack ~ % kubectl get namespace
NAME STATUS AGE
bluehelix Active 146d
broker Active 146d
cattle-fleet-clusters-system Active 87d
8. 如果仍然无法删除命名空间,请查看metadata部分是否存在finalizers字段,如果存在,需要通过如下命令进入命名空间后删除该字段,把metadata部分存在finalizers字段都删掉即可
kubectl edit ns cert-manager
更多推荐
已为社区贡献3条内容
所有评论(0)