Pod 排错
本文是本书排查指南板块下问题排查章节的 Pod排错 一节,介绍 Pod 各种异常现象,可能的原因以及解决方法。
常用命令
排查过程常用的命名如下:
- 查看 Pod 状态:
kubectl get pod <pod-name> -o wide
- 查看 Pod 的 yaml 配置:
kubectl get pod <pod-name> -o yaml
- 查看 Pod 事件:
kubectl describe pod <pod-name>
- 查看容器日志:
kubectl logs <pod-name> [-c <container-name>]
Pod 状态
Pod 有多种状态,这里罗列一下:
Error
: Pod 启动过程中发生错误NodeLost
: Pod 所在节点失联Unkown
: Pod 所在节点失联或其它未知异常Waiting
: Pod 等待启动Pending
: Pod 等待被调度ContainerCreating
: Pod 容器正在被创建Terminating
: Pod 正在被销毁CrashLoopBackOff
: 容器退出,kubelet 正在将它重启InvalidImageName
: 无法解析镜像名称ImageInspectError
: 无法校验镜像ErrImageNeverPull
: 策略禁止拉取镜像ImagePullBackOff
: 正在重试拉取RegistryUnavailable
: 连接不到镜像中心ErrImagePull
: 通用的拉取镜像出错CreateContainerConfigError
: 不能创建 kubelet 使用的容器配置CreateContainerError
: 创建容器失败RunContainerError
: 启动容器失败PreStartHookError
: 执行 preStart hook 报错PostStartHookError
: 执行 postStart hook 报错ContainersNotInitialized
: 容器没有初始化完毕ContainersNotReady
: 容器没有准备完毕ContainerCreating
:容器创建中PodInitializing
:pod 初始化中DockerDaemonNotReady
:docker还没有完全启动NetworkPluginNotReady
: 网络插件还没有完全启动
问题导航
有时候我们无法直接通过异常状态找到异常原因,这里我们罗列一下各种现象,点击即可进入相应的文章,帮助你分析问题,罗列各种可能的原因,进一步定位根因:
- Pod 一直处于 Pending 状态
- Pod 一直处于 ContainerCreating 或 Waiting 状态
- Pod 一直处于 CrashLoopBackOff 状态
- Pod 一直处于 Terminating 状态
- Pod 一直处于 Unknown 状态
- Pod 一直处于 Error 状态
- Pod 一直处于 ImagePullBackOff 状态
- Pod 一直处于 ImageInspectError 状态
- Pod Terminating 慢
- Pod 健康检查失败
- 容器进程主动退出
更多内容还在不断 Loading,如果发发现了更多奇怪现象或相同现象但不同的原因导致的,欢迎一起分享,也可以给本书提 PR,一起完善补充。