K8s强制删除命名空间

有时候通过kubectl delete ns的方式删除命名空间会遇到Terminating的情况,可通过如下的方式解决

方法一

  1. 克隆会话
# kubectl proxy
Starting to serve on 127.0.0.1:8001

切记不要ctrl c关掉,等最后成功删除后再停。

  1. 编辑命名空间json文件
# kubectl get ns hikmars3 -o json > tmp.json
# vim tmp.json

删除spec字段

  1. 执行
# 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

你可能感兴趣的:(开发,kubernetes)