根本没用的方法
假设 “dev” 名称空间正处于Terminating, 此时是无法删除的。就算你使用强制的方法(kubectl delete ns dev--force --grace-period=0) 也是一样的。
正确方法是:
有机会能删的方法
systemctl restart kubelet
kubectl get ns
一定能删的方法
kubectl get ns dev -o json > /tmp/dev.json
vim /tmp/dev.json #删除掉 "spec" 下的内容,即spec的{}为空
另开一个终端:在后台运行“ kubectl proxy ” ,注意不要关掉。
在原终端执行:
cd /tmp
curl -k -H "Content-Type: application/json" -X PUT --data-binary @dev.json http://127.0.0.1:8001/api/v1/namespaces/dev/finalize
输出以下代表成功:
{ "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "dev", "selfLink": "/api/v1/namespaces/dev/finalize", "uid": "bb180481-cf36-4140-86b8-cf802a730763", "resourceVersion": "496797", "creationTimestamp": "2022-02-15T07:04:09Z", "deletionTimestamp": "2022-02-16T05:45:20Z", "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\onTimestamp\":\"2022-02-15T07:04:09Z\",\"deletionTimestamp\":\"2022-02-16T05:45::\"/api/v1/namespaces/dev\",\"uid\":\"bb180481-cf36-4140-86b8-cf802a730763\"},\"ctive\"}}\n" } }, "spec": { }, "status": { "phase": "Terminating" } }
参与自:https://segmentfault.com/a/1190000037572421