kubectl get pods -A 显示大量 Terminating 卡住的 pod 怎么强制清理
发布时间 - 2026-01-17 00:00:00 点击率:次Terminating状态Pod长时间不消失是因finalizer未完成、节点失联或kubelet无响应;应先通过kubectl describe定位原因,再按节点异常或finalizer阻塞分类处理,避免盲目强制删除引发数据残留等问题。
当 kubectl get pods -A 显示大量处于 Terminating 状态且长时间不消失的 Pod,说明它们已向 API Server 发出删除请求,但因某些原因(如 finalizer 未完成、节点失联、kubelet 无响应等)无法真正被清理。此时不能直接“强制删除”所有 Pod,需按原因分类处理,避免破坏集群状态。
确认 Terminating Pod 的根本原因
先查一个典型 Pod 的详细信息,重点关注 deletionTimestamp、finalizers 和 conditions:
kubectl get pod-n -o wide -
kubectl describe pod—— 查看 Events 和 Finalizers 字段-n - 若
Finalizers列出kubernetes.io/pvc-protection或自定义 controller 添加的 finalizer,说明对应资源(如 PVC、CR)尚未释放 - 若所在 Node 状态为
NotReady或已从集群移除,Pod 将卡在 Terminating,因为 kubelet 无法上报删除完成
针对节点异常导致的 Terminating Pod
如果 Pod 所在 Node 已离线或不可恢复(如云主机销毁、物理机宕机),可手动将该 Node 标记为删除,触发控制面清理:
-
kubectl delete node—— 这会移除 Node 对象,让控制器(如 node-controller)开始驱逐其上的 Terminating Pod - 执行后等待 1–2 分钟,再运行
kubectl get pods -A | grep Terminating观察是否减少 - 注意:确保该 Node 确实不会再上线,否则重新加入会导致资源冲突
绕过 finalizer 强制删除单个 Pod(谨慎使用)
仅适用于确认无副作用的场景(如测试环境、已确认 finalizer 永远不会完成):
- 导出 Pod 当前定义:
kubectl get pod-n -o json > pod.json - 编辑
pod.json,清空metadata.finalizers字段(设为[]),并删除metadata.deletionTimestamp字段 - 用 patch 方式提交修改:
kubectl replace --raw "/api/v1/namespaces//pods/ /finalize" -f pod.json - 或更简洁方式(Kubernetes v1.22+):
kubectl patch pod-n -p '{"metadata":{"finalizers":[]}}' --type=merge - 执行后,Pod 应立即从列表中消失
批量清理特定命名空间下的 Terminating Pod(需明确范围)
不建议无差别批量强制删,但若确认某 namespace 全部 Terminating Pod 均因同一节点故障导致,可脚本化处理:
- 先列出所有目标 Pod:
kubectl get pods -n--field-selector status.phase=Pending,spec.nodeName= -o name - 对每个 Pod 执行 finalizer 清除(参考上一步命令),或配合
xargs安全批量操作 - 示例(仅限测试环境):
kubectl get pods -n--field-selector status.phase=Running,spec.nodeName= -o name | sed 's|pod/||' | xargs -I {} kubectl patch pod {} -n -p '{"metadata":{"finalizers":[]}}' --type=merge - 务必提前备份、验证节点状态,并避免在生产核心命名空间中直接运行
不复杂但容易忽略:Terminating 卡住本质是 Kubernetes 的安全机制在起作用。盲目强制删可能造成数据残留、PV 未解绑、Operator 状态错乱等问题。优先查 Node、Finalizer、PVC 关联,再决定是否介入。大多数情况下,修复节点或等待 controller 自愈比“强删”更稳妥。
# js
# json
# node
# kubernetes
# 命名空间
# operator
# Namespace
# delete
# 对象
# kubelet
# 长时间
# 移除
# 离线
# 设为
# 适用于
# 自定义
# 仅限
# 会再
# 永远不会
# 这会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何在橙子建站上传落地页?操作指南详解
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
香港服务器选型指南:免备案配置与高效建站方案解析
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
jQuery中的100个技巧汇总
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Linux安全能力提升路径_长期防护思维说明【指导】
iOS验证手机号的正则表达式
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
如何在万网ECS上快速搭建专属网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
焦点电影公司作品,电影焦点结局是什么?
js实现获取鼠标当前的位置
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
javascript中的try catch异常捕获机制用法分析
Linux系统命令中tree命令详解
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
海南网站制作公司有哪些,海口网是哪家的?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
利用vue写todolist单页应用
如何挑选优质建站一级代理提升网站排名?
iOS中将个别页面强制横屏其他页面竖屏
个人网站制作流程图片大全,个人网站如何注销?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
高防服务器租用如何选择配置与防御等级?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Firefox Developer Edition开发者版本入口
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
网站制作免费,什么网站能看正片电影?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
佛山企业网站制作公司有哪些,沟通100网上服务官网?
制作旅游网站html,怎样注册旅游网站?
如何在新浪SAE免费搭建个人博客?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
如何在香港服务器上快速搭建免备案网站?
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel如何使用Blade模板引擎?(完整语法和示例)
电商网站制作价格怎么算,网上拍卖流程以及规则?
智能起名网站制作软件有哪些,制作logo的软件?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?


