尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

K8s Pod 状态卡在 Terminating,根因竟是 finalizer。

K8s Pod 状态卡在 Terminating,根因竟是 finalizer。 每日技术复盘 #2026-08-06K8s Pod 状态卡在 Terminating根因竟是 finalizer 问题现象某生产环境执行kubectl delete pod pod-name后Pod 一直停留在 Terminating 状态超过 30 分钟仍未被回收。对应节点上的容器实际已停止但 Pod 对象一直删不掉导致StatefulSet 无法重建新 Pod同名 Pod 仍占用HPA 扩容卡住kubectl 日志查询报错 排查过程第一步确认基本状态kubectl get podpod-name-owide# STATUSTerminating, 没有 Finalizers 字段异常第二步查看事件kubectl describe podpod-name# Events 区为空没有报错第三步强制删除试试kubectl delete podpod-name--force--grace-period0# 仍然卡住warning: Immediate deletion does not wait for confirmation第四步深入看 Pod 完整 YAMLkubectl get podpod-name-oyaml|grep-A5finalizers发现关键线索finalizers:-kubernetes-foregroundDeletion第五步检查节点状态kubectl getnodenode-name# STATUSNotReady, KubeletTimeout节点失联了kubelet 无法上报APIServer 收不到删除确认。 根因两个因素叠加节点 NotReady该节点网络分区network partitionkubelet 无法与 APIServer 通信Pod 的 deletion 在 APIServer 侧已标记但等不到 kubelet 的清理完成回执。finalizer 阻塞foregroundDeletion finalizer 要求所有从属资源先删除完毕但节点失联导致垃圾回收器无法执行清理逻辑形成死锁。 解决方案立即恢复# 第一步移除 finalizer 强制释放 Podkubectl patch podpod-name-p{metadata:{finalizers:null}}# 第二步如果节点也不可恢复直接删除节点kubectl deletenodenode-name预防措施配置 Pod 驱逐超时--default-unreachable-tolerate-seconds60默认 5 分钟节点健康检查 自动隔离告警关键组件设置合理的terminationGracePeriodSeconds 复盘总结要点内容核心认知Pod Terminating ≠ 正在删除可能是 finalizer 卡住排查三板斧describe → get -o yaml → 检查节点状态强制删除不万能–force 也不能绕过 finalizer必须手动 patch网络分区是隐形杀手节点失联会让所有 Pod 操作进入薛定谔状态生产建议finalizer 是双刃剑——保护资源 vs 阻塞回收需评估必要性 今日知识点 #218K8s 的 finalizer 机制是资源安全的保险栓但在节点异常时会变成回收路障。记住kubectl patch -p {metadata:{finalizers:null}}这个万能钥匙但用前一定确认资源确实可以安全删除。坚持每日复盘每天一个知识点一年365个
返回列表