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