基于以上现象,你可参考 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 的异常状态,选择对应参考文档进一步定位异常原因:
·Pod 一直处于 ContainerCreating 或 Waiting 状态
·Pod 一直处于 ImagePullBackOff 状态
·Pod 一直处于 Pending 状态
·Pod 一直处于 Terminating 状态
·Pod 健康检查失败
·Pod 处于 CrashLoopBackOff 状态
·Pod 无限重启且流量异常
·容器进程主动退出