当前位置: 首页 > news >正文

kubernetes集群中怎么强制删除处于Terminating的namespace资源

强制删除 namespaces

命令如下:

[root@master-01 ~]# kubectl get ns monitoring -o json > ns.json
[root@master-01 ~]# vim ns.json 
[root@master-01 ~]# kubectl replace --raw "/api/v1/namespaces/monitoring/finalize" -f ns.json

为什么会出现一直Terminating,但是却一直删除不掉
即使用--force --grace-period 0也不行,是因为namespace的finalizer 没机会被清除。

举个例子

比如你部署了 Prometheus Operator:

Operator 在 CRD 对象(servicemonitors.monitoring.coreos.com)上加了 finalizer,要求自己来清理。

你删除了 monitoring 命名空间 → Operator Pod 也被删除。

没有 Pod 来移除 finalizer → 命名空间就一直卡在 Terminating。

原因:

控制器会“不再跑”或“异常退出”的常见原因是:

  • Pod 崩溃或被删除
  • Deployment/DaemonSet副本数为 0
  • 镜像/配置错误导致启动失败
  • API Server 或 RBAC 权限问题
  • 命名空间删除时控制器自身也被删掉
  • 这就是为什么命名空间会卡在 Terminating ——因为没人来移除 finalizer。

具体流程如下:

  1. 命名空间删除时,K8s 会检查 spec.finalizers。
  2. 如果 finalizer 没有被清理,命名空间就卡在 Terminating。
  3. 你用 kubectl replace --raw ... finalize,相当于直接告诉 API Server:
  4. “我已经手动清理了 finalizer,现在可以强制完成删除。”
  5. API Server 接收你提供的 JSON,把 finalizer 清空,命名空间立刻消失。

kubectl replace --raw "/api/v1/namespaces/dev-project/finalize" -f ns.json

命令解析、补充

--raw 表示直接调用 Kubernetes API 的原始路径,而不是通过常规的资源类型。 这里访问的是命名空间的特殊子资源:finalize
常规的资源类型指的是我们平时用 kubectl 操作的那些标准对象,这些资源都有对应的 常规 API 路径,比如:

Pod → /api/v1/namespaces/<ns>/pods
Deployment → /apis/apps/v1/namespaces/<ns>/deployments
Namespace → /api/v1/namespaces

什么是子资源

当你用:

kubectl get pod
kubectl apply -f xxx.yaml
kubectl delete svc my-service

这些都是通过 常规资源类型 API 来操作。
除了这些常规资源类型,有些对象还定义了 子资源 (subresource),用于特殊操作:

Pod 的 log → /api/v1/namespaces/<ns>/pods/<pod>/log
Pod 的 exec → /api/v1/namespaces/<ns>/pods/<pod>/exec
Deployment 的 scale → /apis/apps/v1/namespaces/<ns>/deployments/<name>/scale
Namespace 的 finalize → /api/v1/namespaces/<ns>/finalize

这些子资源不是常规的 CRUD,而是额外的 API 入口。 --raw 就是让你直接访问这些 原始 API 路径,而不是通过 kubectl get/apply/delete 的常规方式。

--此文章仅为笔者拙见,参考了一些资料和文档,欢迎读者修正和补充

http://www.jsqmd.com/news/58751/

相关文章:

  • 检查路径深度
  • chrome driver下载地址
  • 成群结队 - 冲刺总结
  • 从 Pandas 转向 Polars:新手常见的10 个问题与优化建议
  • 二进制兼容
  • 【C语言】选择结构和循环结构的进阶 - 指南
  • 从原型到生产:大型语言模型实践指南
  • 成群结队--冲刺计划
  • 第五天敏捷冲刺
  • Java进阶 多线程
  • Java进阶网络编程,UDP,TCP通信
  • CCPC郑州站 笨蛋题 II
  • IDEA标签窗口好行显示 类注释和方法注释
  • LabVIEW用直线边缘检测实现液位测量 - 教程
  • HEK293细胞:为什么它是重组蛋白表达的黄金标准?
  • kettle从入门到精通 第111课 ETL之kettle webspoon7的docker部署详细教程
  • 树莓派Docker部署AdGuard Home
  • 人工智能发展史简述
  • 第四天敏捷冲刺
  • qy_蓝桥杯编程系列_编程17 好数
  • 读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter1Chapter2
  • static相关
  • 74_基于深度学习的垃圾桶垃圾溢出检测体系(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • Java创建对象完整流程详解
  • PQ v.Next Beta计划与估计
  • re笔记5
  • 北京陪诊公司陪诊师排行
  • 北京陪诊公司排行:专业服务破解就医难题,三甲机构树立行业标杆
  • 【RAG安全】Pirates of the RAG: Adaptively Attacking LLMs to Leak Knowledge Bases - 指南
  • 20232319 2025-2026-1 《网络与系统攻防技术》实验八实验报告