Pod 状态说明

状态含义排查
CrashLoopBackOff容器反复崩溃查看日志、资源限制
ImagePullBackOff镜像拉取失败检查镜像名、网络
CreateContainerError创建容器失败检查配置、权限
OOMKilled内存不足增加 memory limits

Exit Code 规则

范围: 0-255

分类:

  • 0:正常退出
  • 1-128:程序异常
  • 129-255:外部信号

转换公式:

1
2
负数:256 - (|code| % 256)
正数:code % 256

常见退出码

Code信号含义原因
0-正常退出Job完成
1-程序错误代码bug、配置错误
2-Shell错误命令使用错误
126-不可执行权限问题
127-命令未找到PATH错误、拼写错误
137SIGKILL强制杀死OOM、kill -9
139SIGSEGV段错误内存访问错误
143SIGTERM正常终止docker stop
255-退出码超范围exit(-1)

排查命令

1
2
3
4
5
6
7
8
9
# 查看退出码
kubectl describe pod <pod-name>

# 查看日志
kubectl logs <pod-name>
kubectl logs <pod-name> --previous

# 查看事件
kubectl get events --field-selector involvedObject.name=<pod-name>

常见问题

Exit Code 137 (OOM)

1
2
3
4
5
6
# 检查内存
kubectl top pod <pod-name>
# 增加limits
resources:
limits:
memory: "2Gi"

Exit Code 143 (SIGTERM)

1
2
3
4
5
6
# 配置优雅关闭
lifecycle:
preStop:
exec:
command: ["sh", "-c", "sleep 15"]
terminationGracePeriodSeconds: 30

参考https://blog.csdn.net/hakula007/article/details/125786395