尝试强制删除
kubectl delete ns <ns name> --force --grace-period=0
一般情况这个肯定是是不顶用的
解决方法
- 查看“Terminating”状态的namespace:
kubectl get ns
- 选择一个Terminating namespace,并查看namespace 中的finalizer。运行以下命令:
kubectl get ns kubevirt -o yaml
- 导出json格式到tmp.json
kubectl get namespace kubevirt -o json >tmp.json
- 编辑tmp.josn,删除finalizers 字段的值:
- 开启 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/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"
}
}
- 检查该ns是否被删除:
kubectl get ns
可以看到kubevirt已经被删除了