为满足一定的业务需求,用户往往需要对容器服务集群进行一系列复杂的自定义配置。而当集群中的 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 的异常状态,选择对应参考文档进一步定位异常原因: