如何强制删除k8s中的残留namespace?
脚本如下:
#!/bin/bash
set -e
useage(){
echo "useage:"
echo " delns.sh NAMESPACE"
}
if [ $# -lt 1 ];then
useage
exit
fi
NAMESPACE=$1
JSONFILE=${NAMESPACE}.json
kubectl get ns "${NAMESPACE}" -o json > "${JSONFILE}"
vi "${JSONFILE}"
curl -k -H "Content-Type: application/json" -X PUT --data-binary @"${JSONFLE}" \
http://127.0.0.1:8001/api/v1/namespaces/"${NAMESPACE}"/finalize
使用前提
将api-server 代理到本地8001端口
kubectl proxy
使用方法
假设要删除的namespace是test
delns.sh test
脚本自动会打开vi编辑namespace信息,手动将
"spec": {
"finalizers": [
"kubernetes"
]
},
中的 "kubernetes"删除,然后:wq保存并退出编辑即可