有时候,名称空间的正常删除操作可能会莫名卡在 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状态。
-de8bd8f33c3e44a59907dafe1884f228.png) 
       
       
         
       
          
评论区