强制删除 Terminating 状态的 namespace
本文永久链接: https://www.xtplayer.cn/kubernetes/forces-delete-terminated-namespace/
有时候删除命名空间后,发现命名空间一直处于 Terminating 状态。通过执行 kubectl delete namespace ${namespace} --force --grace-period=0
强制删除命令依然无法删除。
登录 rancher ui,切换到需要删除命名空间的集群对应的 集群首页,点击 kubeconfig 文件 保存备用。如果是非 rancher 管理的 k8s 集群,请准备好对应集群的 kubeconfig 配置文件。
登录一个安装有 jq(https://stedolan.github.io/jq/)和 curl 工具的主机。
接着执行以下命令:
KUBE_CONFIG=xxx.yaml
TERMINATING_NAMESPACE=xxx
kubectl --kubeconfig ${KUBE_CONFIG} get ns ${TERMINATING_NAMESPACE} -ojson| \
jq 'del(.spec.finalizers[])'| \
jq 'del(.metadata.finalizers)' > ${TERMINATING_NAMESPACE}.json
kubectl --kubeconfig ${KUBE_CONFIG} proxy --port=8765;
curl -k -H "Content-Type: application/json" -X PUT --data-binary @${TERMINATING_NAMESPACE}.json "http://127.0.0.1:8765/api/v1/namespaces/${TERMINATING_NAMESPACE}/finalize"如果以上方法不可用,也可以尝试以下方法:
KUBE_CONFIG=xxx.yaml
TERMINATING_NAMESPACE=xxx
kubectl --kubeconfig ${KUBE_CONFIG} get ns ${TERMINATING_NAMESPACE} -o json | jq 'del(.spec.finalizers[])' | kubectl --kubeconfig ${KUBE_CONFIG} replace --raw "/api/v1/namespaces/${TERMINATING_NAMESPACE}/finalize" -f -
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT老男孩!