现象:
kubectl get pods <任务名> 发现任务RESTARTS 大于1,说明任务重启过。
查看上次重启原因:
kubectl describe pods <任务名>
image.png
原因分析:
步骤1: 先查看Last State 原因是什么?
Pod --Error 状态
通常处于 Error 状态说明 Pod 启动过程中发生了错误。常见的原因包括
- 依赖的 ConfigMap、Secret 或者 PV 等不存在
请求的资源超过了管理员设置的限制,比如超过了 LimitRange 等
违反集群的安全策略,比如违反了 PodSecurityPolicy 等
容器无权操作集群内的资源,比如开启 RBAC 后,需要为 ServiceAccount 配置角色绑定
参考:https://blog.csdn.net/wuli_smbug/article/details/103767136
可能的原因是请求资源超过了限制。
步骤2: 分析ExitCode 的含义
137:是由于内存不足导致,
可以查看到日志:ubuntu 的系统日志在 /var/log/syslog,centos 的系统日志在 /var/log/messages,都可以用 journalctl -k 来查看系统日志
通过日志,我查看到了OOMkiller 和通过OOM评分,选择评分最高,驱逐该Pod的整个过程。
image.png
image.png
上述日志说明内存超出了限制而导致任务驱逐。
参考:https://www.bookstack.cn/read/kubernetes-practice-guide/troubleshooting-trick-analysis-exitcode.md