正常删除
kubectl delete namespace NAMESPACENAME
强制删除
kubectl delete namespace NAMESPACENAME --force --grace-period=0
如果强制删除也没有用的话
修改finalizers,删除下面红色框内容
kubectl edit namespace NAMESPACE_NAME
如果这个方法也不行的话
通过调用接口删除
kubectl get namespace <terminating-namespace> -o json >tmp.json
编辑tmp.json,删除finalizers 字段的值
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"kubernetes-dashboard\"}}\n"
},
"creationTimestamp": "2022-05-29T14:35:19Z",
"deletionTimestamp": "2022-05-30T06:51:16Z",
"name": "kubernetes-dashboard",
"resourceVersion": "1048583",
"selfLink": "/api/v1/namespaces/kubernetes-dashboard",
"uid": "2320611c-1eec-4903-80e9-e30850b9b5c7"
},
"spec": {
"finalizers": []
},
"status": {
"phase": "Terminating"
}
}
开启 proxy
kubectl proxy
打开新的terminal 窗口,运行以下命令:
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/<terminating-namespace>/finalize
处理pod无法删除一直处在Terminating问题
(1)强制删除
kubectl delete pod xxx -n xxx --force --grace-period=0
(2)如果强制删除还不行,设置finalizers为空(如果一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新。kubernetes还提供了一种在容器运行时,直接对容器进行修改的方式,就是patch命令。)
kubectl patch pod xxx -n xxx -p ‘{“metadata”:{“finalizers”:null}}’
这样pod就可以删除了。
发布者:LJH,转发请注明出处:https://www.ljh.cool/37317.html