有时候通过kubectl delete ns
的方式删除命名空间会遇到Terminating
的情况,可通过如下的方式解决
方法一:
# kubectl proxy
Starting to serve on 127.0.0.1:8001
切记不要ctrl c
关掉,等最后成功删除后再停。
# kubectl get ns hikmars3 -o json > tmp.json
# vim tmp.json
删除spec
字段
# curl -k -H "Content-Type:application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/api/v1/namespaces/hikmars3/finalize
再查看命名空间发现已被成功删除。
方法二
执行以下脚本
#!/bin/bash
del_list=`kubectl get ns | grep Ter |awk '{print $1}'`
kubectl proxy --port=8080 &
for ns in `echo ${del_list}`
do
kubectl get namespace $ns -o json > tmp.json
sed -i '80,84d' tmp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8080/api/v1/namespaces/$ns/finalize
done
result_pids=`ps -ef |grep "port=8080" |grep -v grep|awk '{print $2}'`
if [ ! -z "$result_pids" ];then
for pids in `echo "$result_pids"`
do
echo "kill pid $pids"
kill -9 $pids
done
fi