202303
Kubernetes

K8s 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和健康检查 |

预防措施

  1. 设置合理的资源请求和限制
  2. 配置正确的健康检查
  3. 监控Pod重启指标
  4. 应用优雅关闭处理

记住:90%的Pod重启问题都是资源不足或应用Bug。