0
点赞
收藏
分享

微信扫一扫

kubelet Pod 的状态分析

蓝哆啦呀 2021-09-28 阅读 28

pod从创建到最后的创建成功会分别处于不同的阶段,在源码中用PodPhase来表示不同的阶段:

一个pod的完整创建,通常会伴随着各种事件的产生,k8s种事件的种类总共只有4种:

PodStatus 有一组PodConditions。 PodCondition中的ConditionStatus,它代表了当前pod是否处于某一个阶段(PodScheduled,Ready,Initialized,Unschedulable),“true” 表示处于,“false”表示不处于。


容器的状态:

举一个例子来说明一下情况

kubectl apply -f busybox.yaml

1. 写入数据到etcd

2. 开始被调度,但是还未调度到具体node上,请注意:PodScheduled的status=“true”

3.  被调度到了具体的node上hostip绑定了,并且被所有初始化容器已经启动完毕(注意busybox.yaml中pod没有指定init container,所以这里很快就被设置成true),被调度到的节点watch到并开始创建容器(此阶段是在拉去镜像)然后创建容器 ,而此时Ready的status是false,仔细看会发现,containerStatus的状态为waiting

4. 容器创建成功,Ready的status=“true”,此时容器的status也为running,这个时候,对应的pod的PodPhase也应该为running


CrashLoopBackOff: 容器退出,kubelet正在将它重启

InvalidImageName: 无法解析镜像名称

ImageInspectError: 无法校验镜像

ErrImageNeverPull: 策略禁止拉取镜像

ImagePullBackOff: 正在重试拉取

RegistryUnavailable: 连接不到镜像中心

ErrImagePull: 通用的拉取镜像出错

CreateContainerConfigError: 不能创建kubelet使用的容器配置

CreateContainerError: 创建容器失败

m.internalLifecycle.PreStartContainer  执行hook报错

RunContainerError: 启动容器失败

PostStartHookError: 执行hook报错


ContainersNotInitialized: 容器没有初始化完毕

ContainersNotReady: 容器没有准备完毕


ContainerCreating:容器创建中

PodInitializing:pod 初始化中


DockerDaemonNotReady:docker还没有完全启动

NetworkPluginNotReady: 网络插件还没有完全启动

举报

相关推荐

0 条评论