Namespace 长期 Terminating:发现残留资源与 API 故障

检查命名空间条件、不可用 APIService 和资源 finalizer,安全处理 Kubernetes 命名空间删除阻塞。

文章目录 · 4 节

命名空间删除依赖发现其中所有 namespaced 资源并完成 finalizer。聚合 API 不可用、CRD 控制器缺失或资源清理失败,都会让它停留在 Terminating。

读取删除条件

kubectl get namespace demo -o yaml
kubectl describe namespace demo
kubectl get apiservice | grep False

status.conditions 通常会指出发现失败、内容残留或 finalizer 未完成。先修复不可用 APIService,否则控制器无法确认资源已经清空。

枚举残留资源

kubectl api-resources --verbs=list --namespaced -o name
kubectl api-resources --verbs=list --namespaced -o name | ForEach-Object { kubectl get $_ -n demo --ignore-not-found }

在 PowerShell 中可逐类查询。找到对象后检查其 finalizer 对应的控制器与外部资源,不要直接把命名空间 finalize 当作第一步。

强制完成前

  • 导出命名空间及残留对象 YAML
  • 确认外部负载均衡、卷和云资源已释放
  • 修复或恢复负责清理的 operator
  • 记录必须手工移除的 finalizer 与审批

收尾清单

强制 finalize 后,API 中看不到资源并不代表外部资产已删除。执行云资源、DNS、存储和权限泄漏检查,并补齐控制器不可用时的清理 Runbook。