k8s-1.21.1版本之前,删除namespace,处于僵尸状态Terminating,无法删除,即使采用--force 也无济于事,找到了以下方法解决这个问题。

问题解决

#先导出json文件
kubectl get namespace 名称空间的名字 -o json > tmp.json
#删除finalizers列表
sed -i '/"finalizers"\: \[/,+2d' tmp.json
#在另一个master终端执行kubectl proxy

#在当前终端执行接口推送数据
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/名称空间的名字/finalize &>/dev/null

使用脚本方式

cat >> delete_ns.sh <<\EOF
kubectl get namespace $1 -o json > tmp.json
# 修改导出文件,删除其中的finalizers这一项,其他保持不变
sed -i '/"finalizers"\: \[/,+2d' tmp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/$1/finalize &>/dev/null
if [ $? -eq 0 ];then
    echo "删除成功"
else
    echo "删除失败"
fi
EOF

# 执行
sh delete_ns.sh 名称空间的名字
届ける言葉を今は育ててる
最后更新于 2024-03-17