有时候会遇到namespace通过下面正常或强制的删除时,是不成功的。所以收集了下面三种方式,大家可以试试。
正常删除
kubectl delete namespace NAMESPACENAME
强制删除
kubectl delete namespace NAMESPACENAME --force --grace-period=0
方法一:
找到如下字段:
kubectl edit namespaces Name
通过命令编辑,删除所标记字段既可,保存退出。其他资源有此状况,可以找下是否有此字段,如果不行使用第二种
方法二:
以namespace为 haiouc 演示
# 获取namespace相关信息
kubectl get ns haiouc -o json >tmp.json
# 开启内网api代理
kubectl proxy
编辑 tmp.json 去除spec里中间的3行信息,保存退出
"spec": {
"finalizers": [
"kubernetes"
]
},
# 更新
curl -k -H "Content-Type:application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/haiouc/finalize
查看namespace,已经删除
方法三:
kubectl get namespace ingress -o json \
| tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
| kubectl replace --raw /api/v1/namespaces/ingress/finalize -f -
# kubectl get namespace ingress -o json \
> | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
> | kubectl replace --raw /api/v1/namespaces/ingress/finalize -f -
{"kind":"Namespace","apiVersion":"v1","metadata":{"name":"ingress","selfLink":"/api/v1/namespaces/ingress/finalize","uid":"47d567a5-7179-4b6d-89f8-9f307bc5d3c7","resourceVersion":"160829128","creationTimestamp":"2021-07-09T08:11:26Z","deletionTimestamp":"2021-09-24T05:14:15Z"},"spec":{},"status":{"phase":"Terminating","conditions":[{"type":"NamespaceDeletionDiscoveryFailure","status":"True","lastTransitionTime":"2021-09-24T05:14:20Z","reason":"DiscoveryFailed","message":"Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request"},{"type":"NamespaceDeletionGroupVersionParsingFailure","status":"False","lastTransitionTime":"2021-09-24T05:14:20Z","reason":"ParsedGroupVersions","message":"All legacy kube types successfully parsed"},{"type":"NamespaceDeletionContentFailure","status":"False","lastTransitionTime":"2021-09-24T05:14:20Z","reason":"ContentDeleted","message":"All content successfully deleted"}]}}