•2023年03月
KubernetesK8s Pod 意外重启排查三板斧
生产环境Pod莫名重启?三个命令快速定位问题根因
现象
Pod状态正常,但重启次数不断增加,业务偶发异常。
排查流程
1. 查看退出码
kubectl describe pod <pod-name> | grep "Exit Code"
- 137: 被SIGKILL杀死,通常是OOM
- 143: 被SIGTERM杀死,通常是优雅关闭
- 1: 应用异常退出
2. 检查资源限制
kubectl top pod <pod-name>
kubectl describe pod <pod-name> | grep -A 5 -B 5 "Limits\|Requests"
内存使用接近limit?调大或优化代码。
3. 查看内核日志
# 在节点上执行
dmesg | grep -i "killed process"
journalctl -u kubelet | grep OOM
常见原因速查表
| 退出码 | 可能原因 | 解决方案 | |--------|----------|----------| | 137 | OOM Killer | 增加内存限制或优化内存使用 | | 143 | 优雅关闭超时 | 增加terminationGracePeriodSeconds | | 1 | 应用Bug | 查看应用日志,修复代码问题 | | 0 | 正常退出但重启 | 检查restartPolicy和健康检查 |
预防措施
- 设置合理的资源请求和限制
- 配置正确的健康检查
- 监控Pod重启指标
- 应用优雅关闭处理
记住:90%的Pod重启问题都是资源不足或应用Bug。