当前位置: 首页 > 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.rkmt.cn/news/69157.html

相关文章:

  • 检查路径深度
  • chrome driver下载地址
  • 【C语言】选择结构和循环结构的进阶 - 指南
  • CCPC郑州站 笨蛋题 II
  • qy_蓝桥杯编程系列_编程17 好数
  • 74_基于深度学习的垃圾桶垃圾溢出检测体系(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 【RAG安全】Pirates of the RAG: Adaptively Attacking LLMs to Leak Knowledge Bases - 指南
  • 20232319 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 919191# B4358 [GESP202506 三级] 奇偶校验
  • 2025年必收藏的8款AI论文生成神器!高效写作轻松搞定
  • 2025 年黑猪批发基地品牌推荐排行榜,黑金刚黑猪批发,国寿黑猪批发,杜洛克黑猪批发,沂蒙黑猪批发,太湖原种黑猪批发,三元仔猪黑猪批发,长白仔猪黑猪养殖,黑猪繁育,黑猪仔猪批发,原种黑猪批发基地推荐
  • 补发读后感
  • 北京上门收酒的公司
  • 人工智能之数据分析 Pandas:第二章 Series
  • 暗黑2重制版(Diablo II Resurrected)——自制地图高速公路简化版 - dark
  • Nat Commun | DNALONGBENCH:基因组学长距离DNA预测任务的综合基准测试套件
  • 成群结队-冲刺日志(阶段二)
  • Nat Methods | Helixer:结合深度学习与隐马尔可夫模型的真核生物基因从头预测工具-获取蛋白质序列
  • P4390 [BalkanOI 2007] Mokia 摩基亚
  • 日总结 34
  • Avro
  • 关于C:scanf()的一些注意事项
  • 2025年产品动画制作公司最新推荐,聚焦资质、案例、售后的实力品牌深度解析!
  • 把一个软件窗口部分内容置顶 的软件下载
  • 哔哩哔哩野生API宝典:从入门到精通
  • 第2篇Scrum冲刺博客
  • PbootCMS 指定栏目标签详解与应用场景
  • 动态数组
  • 【Linux进阶系列】:线程(上) - 详解
  • Solon AI 开发学习8 - chat - Vision(理解)图片、声音、视频