本文永久链接: https://www.xtplayer.cn/kubernetes/forces-delete-terminated-namespace/
有时候删除命名空间后,发现命名空间一直处于 Terminating 状态。通过执行 kubectl delete namespace ${namespace} --force --grace-period=0
强制删除命令依然无法删除。
rancher 自定义 k8s 集群或者导入 rancher 管理的 k8s 集群
登录 rancher ui,切换到对应集群首页,点击 执行 kubectl 命令行。
接着执行以下命令:
NAMESPACE= ''
RANCHER_SERVER_URL=$( kubectl config view -o json|jq -r .clusters[0].cluster.server ) CLUSTER_TOKEN=$( kubectl config view -o json|jq -r .users[0].user.token )
kubectl get ns ${NAMESPACE} -ojson| \ jq 'del(.spec.finalizers[])'| \ jq 'del(.metadata.finalizers)' > ${NAMESPACE}.json
curl -k \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${CLUSTER_TOKEN}" \ -X PUT \ --data-binary @${NAMESPACE}.json \ ${RANCHER_SERVER_URL}/api/v1/namespaces/${NAMESPACE}/finalize
|
非 rancher 管理的 k8s 集群
主机上需要安装 jq 和 curl 工具,https://stedolan.github.io/jq/
NAMESPACE='' KUBE_CONFIG=''
K8S_API_URL=$( kubectl --kubeconfig=${KUBE_CONFIG} config view --raw -o json|jq -r '.clusters[0].cluster.server' )
kubectl --kubeconfig=${KUBE_CONFIG} config view --raw -o json| \ jq -r '.users[0].user."client-certificate-data"'| \ tr -d '"'|base64 --decode > /tmp/client_cert.pem
kubectl --kubeconfig=${KUBE_CONFIG} config view --raw -o json| \ jq -r '.users[0].user."client-key-data"'| \ tr -d '"'|base64 --decode > /tmp/client_key.pem
kubectl --kubeconfig=${KUBE_CONFIG} config view --raw -o json| \ jq -r '.clusters[0].cluster."certificate-authority-data"'| \ tr -d '"'|base64 --decode > /tmp/client_ca.pem
kubectl --kubeconfig=${KUBE_CONFIG} get ns ${NAMESPACE} -ojson| \ jq 'del(.spec.finalizers[])'| \ jq 'del(.metadata.finalizers)' > ${NAMESPACE}.json
curl -k \ --cert /tmp/client_cert.pem \ --key /tmp/client_key.pem \ --cacert /tmp/client_ca.pem \ -H "Content-Type: application/json" \ -X PUT \ --data-binary @${NAMESPACE}.json \ ${K8S_API_URL}/api/v1/namespaces/${NAMESPACE}/finalize
|