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: 网络插件还没有完全启动

问题导航

有时候我们无法直接通过异常状态找到异常原因,这里我们罗列一下各种现象,点击即可进入相应的文章,帮助你分析问题,罗列各种可能的原因,进一步定位根因:

更多内容还在不断 Loading,如果发发现了更多奇怪现象或相同现象但不同的原因导致的,欢迎一起分享,也可以给本书提 PR,一起完善补充。