k8s删除namespaces状态一直为terminating问题处理
·
- 尝试删除kube-test的命名空间
kubectl delete ns kube-test - 查看集群所有namespaces
[root@k8s-master ~]# kubectl get ns
NAME STATUS AGE
default Active 48d
kube-node-lease Active 48d
kube-public Active 48d
kube-system Active 48d
kube-test Terminating 32d
- 解决方法
第一步:新开一个窗口,运行命令kubectl proxy
此命令启动了一个代理服务来接收来自你本机的HTTP连接并转发至API服务器,同时处理身份认证
第二步:新开一个窗口,创建一个shell脚本test.sh,并写入以下内容
#!/bin/bash
set -eo pipefail
# 报错并退出函数
die() { echo "$*" 1>&2 ; exit 1; }
# 检查依赖工具函数
need() {
which "$1" &>/dev/null || die "Binary '$1' is missing but required"
}
# 检查前置条件
need "jq"
need "curl"
need "kubectl"
PROJECT="$1"
shift
test -n "$PROJECT" || die "Missing arguments: kill-ns <namespace>"
kubectl proxy &>/dev/null &
PROXY_PID=$!
killproxy () {
kill $PROXY_PID
}
trap killproxy EXIT
sleep 1 # give the proxy a second
kubectl get namespace "$PROJECT" -o json | jq 'del(.spec.finalizers[] | select("kubernetes"))' | curl -s -k -H "Content-Type: application/json" -X PUT -o /dev/null --data-binary @- http://localhost:8001/api/v1/namespaces/$PROJECT/finalize && echo "Killed namespace: $PROJECT"
第三步:执行脚本删除
bash test.sh kube-test
第四步:查看结果
[root@k8s-master ~]# kubectl get ns
NAME STATUS AGE
default Active 48d
kube-node-lease Active 48d
kube-public Active 48d
kube-system Active 48d
更多推荐
所有评论(0)