自动重启与重调度
当容器发生故障时,最基本的自愈手段就是重启。
Kubernetes 提供了多层次的自愈机制,从进程级到集群级,每一层都有对应的自动处理方案。本节详解 Kubernetes 的自动重启与重调度机制。
Kubernetes 自愈层级
存活探针驱动的自动重启
存活探针(Liveness Probe)是最常用的自动重启机制:
liveness-probe-config.yaml
存活探针触发的重启流程:
Pod 重启策略
restartPolicy 配置
restart-policy.yaml
重启行为示例
Pod 驱逐与重调度
当节点不可用时,Pod 会被驱逐并在其他节点重新调度:
PodDisruptionBudget(PDB)
PDB 保证驱逐过程中最小可用数量:
pod-disruption-budget.yaml
常见驱逐原因
Node Problem Detector(NPD)
NPD 监控节点级别的硬件和系统问题:
node-problem-detector.yaml
NPD 检测的问题类型:
资源限制与重启
合理的资源限制能减少不必要的重启:
resource-limits.yaml
OOMKilled 问题的排查:
自动重启监控
自动重启次数过多是系统异常的信号:
restart-monitor.yaml
质量判断标准
一篇「自动重启与重调度」的文章是否达标,要看它是否回答了:
- ✅ K8s 有哪些层级的自愈机制?
- ✅ 存活探针如何触发自动重启?
- ✅ restartPolicy 的三种策略分别适用什么场景?
- ✅ Pod 被驱逐后如何重调度?
- ❌ 只有基本概念,没有配置示例和流程图——不达标
本章总结
核心要点:
- 存活探针是最常用的自动重启机制:连续失败 N 次后触发重启
- restartPolicy 控制重启策略:Always/OnFailure/Never 根据场景选择
- PodDisruptionBudget 保证最小可用数:防止驱逐时服务中断
- Node Problem Detector 检测节点级问题:提前发现节点异常
- 监控重启次数是关键:频繁重启往往是更严重问题的信号