- 强制删除命名空间的 Finalizer, Finalizer 是导致命名空间无法正常删除的常见原因。通过以下命令移除 Finalizer:
kubectl get namespace kuboard -o json > kuboard.json
编辑 kuboard.json,删除 spec.finalizers 字段中的所有内容:
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
...
},
"spec": {
"finalizers": [] # 删除原有内容,保留空数组
}
}
应用修改:
kubectl replace --raw "/api/v1/namespaces/kuboard/finalize" -f kuboard.json
- 检查并删除残留资源, 即使 kubectl get all 显示无资源,某些资源(如 CRD、Webhook 等)可能未被列出
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n kuboard --ignore-not-found
如果发现残留资源,手动删除它们:
kubectl delete <resource类型> <资源名称> -n kuboard
- 重新创建命名空间并部署 Kuboard, 确认命名空间已删除后,重新创建并部署:
kubectl delete namespace kuboard # 确保旧命名空间已消失
kubectl create namespace kuboard
kubectl apply -f kuboard-v3-swr.yaml -n kuboard
- 检查命名空间和资源状态:
kubectl get namespace kuboard
kubectl get all -n kuboard
