侧边栏壁纸
博主头像
张种恩博主等级

一个能运维的 JPG 搬运工

  • 累计撰写 703 篇文章
  • 累计创建 60 个标签
  • 累计收到 24 条评论

删除处于 Terminating 状态的命名空间

张种恩
2021-07-09 / 0 评论 / 0 点赞 / 125 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-07-09,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

有时候,名称空间的正常删除操作可能会莫名卡在 Terminating 状态。

常用的解决方案是获取并保存目标 Namespace 对象的 JSON 格式的配置清单,将 spec.finalizers 字段的值置空,而后手动终止相应的名称空间对象即可。以名为 demo 的 Namespace 对象为例,首先获取其当前配置:

$ kubectl get ns demo -o json > demo-ns.json

编辑 demo-ns.json 文件,将其中的 spec.finalizers 的配置部分修改为如下所示:

$ cat demo-ns.json 
{
    "apiVersion": "v1",
    "kind": "Namespace",
...
    "spec": {
        "finalizers": []
    },
...
}

而后运行如下命令手动终止 demo Namespace:

$ kubectl replace --raw "/api/v1/namespaces/demo/finalize" -f demo-ns.json

Namespace 对象仅支持在 spec 中定义期望使用的终结器(finalizer,也称为垃圾收集器),用于让监测者在删除名称空间时清除相关的资源,它是个可选字段,且目前仅支持使用 kubernetes 作为 其属性值。在Namespace 对象上指定了不存在的终结器时并不影响创建操作,但删除该 Namespace 对象的操作将会被“卡住”,即删除操作将一直停留在 Terminating 状态。

0

评论区