pod重启次数过多怎么排查
1、确认 Pod 状态
kubectl get pod <pod-name> -n <namespace> -o wide # 查看重启次数、状态(如 CrashLoopBackOff)及所在节点
2、检查重启事件与退出码
kubectl describe pod <pod-name> -n <namespace> | grep -A 10 "Events" # 查看最近事件
kubectl describe pod <pod-name> -n <namespace> | grep "Last State" # 检查容器退出码
关键退出码解读
Exit Code 137:内存超限(OOMKilled),需检查内存限制。
Exit Code 1:应用内部错误(如配置缺失、启动失败)。
Exit Code 126/127:启动命令或镜像入口点错误。137 内存超限 (OOMKilled) 检查 resources.limits.memory
1 应用崩溃/配置错误 查看应用日志定位具体错误
126/127 启动命令权限或路径错误 验证容器入口点命令
3、查看崩溃前的日志
kubectl logs <pod-name> -n <namespace> --previous --timestamps # 获取上一次容器
数据库连接失败(如 Connection refused)。
配置文件解析错误(如 FileNotFoundException)。
依赖服务不可用(如 ServiceUnavailable)。
4、其他可能得原因
资源超限
kubectl describe pod <pod-name> | grep -i "OOM" # 确认是否因内存超限被杀
kubectl top pod <pod-name> --containers # 实时监控资源使用(需安装 Metrics Server)
健康检查失败(Liveness Probe)
kubectl describe pod <pod-name> | grep -A 10 "Liveness" # 检查探针配置
典型问题
5、进阶排查技巧
集群事件分析:相关的 Warning 事件(如节点资源不足、镜像拉取失败)
kubectl get events --sort-by=.metadata.creationTimestamp --namespace=<namespace> # 按时间排序事件
资源配额检查:
kubectl describe pod <pod-name> | grep -E "Limits|Requests" # 对比申请与限制
kubectl describe quota -n <namespace> # 检查命名空间配额
节点状态排查:
kubectl describe node <node-name> | grep -i "memory|cpu" # 检查节点资源压力
kubectl get nodes # 确认节点是否 Ready