kubectl命令强制删除一直terminating的namespace(通过API直接修改Namespace的Finalizers)

要强制删除处于“Terminating”状态的 ingress-nginx 命名空间,您可以按照以下步骤操作:

  1. 获取命名空间的 JSON 描述并保存到文件:

    kubectl get namespace ingress-nginx -o json > ingress-nginx.json
    
  2. 编辑保存的 JSON 文件:

    打开 ingress-nginx.json 文件,找到 metadata.finalizers 字段,将其值设置为空数组 [],即:

    "finalizers": []
    
  3. 启动 Kubernetes 代理:

    在终端中运行:

    kubectl proxy
    

    此命令将在本地启动一个代理,默认监听地址为 http://127.0.0.1:8001

  4. 通过 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 服务器,完成删除操作。

  5. 验证命名空间是否已删除:

    kubectl get namespaces
    

    确认 ingress-nginx 命名空间不再列出,表示已成功删除。

请注意,直接修改 finalizers 字段会跳过某些清理步骤,可能导致资源残留。因此,在执行此操作前,确保您已备份重要数据,并了解可能的影响。

posted @   broadviews  阅读(109)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示