Kubernetes 删除namespace Terminating解决脚本
当我们删除namespace的时候,经常会出现状态为Terminating
,我们可以使用下面的脚本进行处理,从而减少ns 出现Terminating夯住的情况
脚本内容如下
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> </span> <span>~]#</span> <span> cat kubedel</span> <span>.</span> <span>sh</span>
<span>#!/bin/bash</span>
<span># 获取要删除的 namespace 名称</span>
<span>NAMESPACE</span> <span>=</span> <span>"$1"</span>
<span># 如果没有传入参数,提示用户传入 namespace 名称</span>
<span>if</span> <span> </span> <span>[</span> <span> </span> <span>-</span> <span>z </span> <span>"$NAMESPACE"</span> <span> </span> <span>]</span>
<span>then</span>
<span> echo </span> <span>"请传入要删除的 namespace 名称:"</span>
<span> read NAMESPACE</span>
<span>fi</span>
<span># 提示用户 namespace 名称</span>
<span>echo </span> <span>"您将要删除的 namespace 名称是:$NAMESPACE"</span>
<span># 使用 kubectl 命令获取 namespace 对应的 JSON 格式,再用 jq 工具修改 namespace 的 spec 属性,并将修改后的 JSON 数据保存到 temp.json 文件中</span>
<span>kubectl </span> <span>get</span> <span> </span> <span>namespace</span> <span> </span> <span>"$NAMESPACE"</span> <span> </span> <span>-</span> <span>o json </span> <span>|</span> <span> jq </span> <span>'.spec = {"finalizers":[]}'</span> <span> </span> <span>></span> <span> temp</span> <span>.</span> <span>json</span>
<span># 使用 curl 命令发送 PUT 请求,删除指定的 namespace</span>
<span>curl </span> <span>-</span> <span>k </span> <span>-</span> <span>H </span> <span>"Content-Type: application/json"</span> <span> </span> <span>-</span> <span>X PUT </span> <span>--</span> <span>data</span> <span>-</span> <span>binary </span> <span>@temp</span> <span>.</span> <span>json </span> <span>"127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize"</span>
<span># 检查是否删除成功,输出成功或失败信息</span>
<span>if</span> <span> kubectl </span> <span>get</span> <span> </span> <span>namespace</span> <span> </span> <span>"$NAMESPACE"</span> <span> </span> <span>></span> <span>/dev/</span> <span>null</span> <span> </span> <span>2</span> <span>>&</span> <span>1</span>
<span>then</span>
<span> echo </span> <span>"删除 namespace 成功"</span>
<span>else</span>
<span> echo </span> <span>"删除 namespace 失败"</span>
<span>fi</span>
效果图:
当删除不存在的ns
正常删除ns