抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

有时 k8s 命名空间namespace 删除时卡住,会一直处于 Terminating,我们可以通过 kubectl proxy 提供 api 强制删除

请明确知道自己的行为,并确保此命名空间的确不再使用,以免在生产环境中强制删除造成无法挽回的后果

一、准备删除脚本

准备删除脚本 ns-del.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <namespace>"
exit 1
fi
NAMESPACE=$1
kubectl proxy --port=8015 &
PROXY_PID=$!
sleep 3
kubectl get namespace ${NAMESPACE} -o json | jq '.spec = {"finalizers":[]}' > ns-del-meta.json
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -H "Content-Type: application/json" -X PUT --data-binary @ns-del-meta.json 127.0.0.1:8015/api/v1/namespaces/${NAMESPACE}/finalize)
if [ "$RESPONSE" -eq 200 ] || [ "$RESPONSE" -eq 204 ]; then
echo "Namespace $NAMESPACE force deleted successfully."
else
echo "Failed to force delete namespace $NAMESPACE. HTTP status code: $RESPONSE"
fi
kill $PROXY_PID
rm ns-del-meta.json

二、删除命名空间

1
2
3
4
$ sudo bash ns-del.sh <要删除的namespace>

Starting to serve on 127.0.0.1:8015
Namespace xxx force deleted successfully.

评论