侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

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

zze
zze
2021-07-09 / 0 评论 / 0 点赞 / 333 阅读 / 1107 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

有时候,名称空间的正常删除操作可能会莫名卡在 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

评论区