要强制删除处于“Terminating”状态的 ingress-nginx
命名空间,您可以按照以下步骤操作:
-
获取命名空间的 JSON 描述并保存到文件:
kubectl get namespace ingress-nginx -o json > ingress-nginx.json
-
编辑保存的 JSON 文件:
打开
ingress-nginx.json
文件,找到metadata.finalizers
字段,将其值设置为空数组[]
,即:"finalizers": []
-
启动 Kubernetes 代理:
在终端中运行:
kubectl proxy
此命令将在本地启动一个代理,默认监听地址为
http://127.0.0.1:8001
。 -
通过 API 发送修改后的 JSON 文件以完成删除:
在另一个终端窗口中,运行以下命令:
curl -k -H "Content-Type: application/json" -X PUT --data-binary @ingress-nginx.json http://127.0.0.1:8001/api/v1/namespaces/ingress-nginx/finalize
此命令将修改后的命名空间配置发送到 Kubernetes API 服务器,完成删除操作。
-
验证命名空间是否已删除:
kubectl get namespaces
确认
ingress-nginx
命名空间不再列出,表示已成功删除。
请注意,直接修改 finalizers
字段会跳过某些清理步骤,可能导致资源残留。因此,在执行此操作前,确保您已备份重要数据,并了解可能的影响。