尝试强制删除

kubectl delete ns <ns name> --force --grace-period=0

一般情况这个肯定是是不顶用的

解决方法

  1. 查看“Terminating”状态的namespace:
kubectl get ns

  1. 选择一个Terminating namespace,并查看namespace 中的finalizer。运行以下命令:
kubectl get ns kubevirt -o yaml

  1. 导出json格式到tmp.json
kubectl get namespace kubevirt -o json >tmp.json
  1. 编辑tmp.josn,删除finalizers 字段的值:
  2. 开启 proxy :
kubectl proxy
  1. 打开新的terminal 窗口,运行以下命令:
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/kubevirt/finalize

输出以下信息:

{
  "kind": "Namespace",
  "apiVersion": "v1",
  "metadata": {
    "name": "istio-system",
    "selfLink": "/api/v1/namespaces/istio-system/finalize",
    "uid": "2e274537-727f-4a8f-ae8c-397473ed619a",
    "resourceVersion": "3249492",
    "creationTimestamp": "2019-11-20T15:18:06Z",
    "deletionTimestamp": "2020-01-16T02:50:02Z"
  },
  "spec": {
    
  },
  "status": {
    "phase": "Terminating"
  }

}
  1. 检查该ns是否被删除:
kubectl get ns

可以看到kubevirt已经被删除了

参考来自kubernetes 删除namespace 后一直处于Terminating状态

最后修改:2022 年 04 月 18 日
感谢您的支持