文章目录
Pod Lifecle
Pod的阶段:Pod phase
相关字段:.status.phase
phase表示一个Pod处于其生命周期的哪个阶段,一共有以下5个可能的取值:
- Pending:Pod已经被k8s系统接受,但Pod中还有容器没有被创建。Pod被调度前和下载容器镜像的时候都处于这个阶段
- Running:Pod已经被调度到Node上,所有的容器都已经被创建,并且至少有一个容器还在运行中(正在启动或重启中的容器也算)
- Succeeded:Pod中的所有容器都成功停止,并且不会再次重启
- Failed:Pod中的所有容器都已经停止,并且至少有一个容器是以失败停止的(以非0状态退出或被系统强制停止)
- Unknown:由于某种原因无法获得Pod的状态,一般是和Pod所在的Host出现通信问题导致
Pod phase的查看方式:
kubectl get pods pi2-ll9dn -o yaml |grep 'phase'
phase: Succeeded
注意,使用以下命令看到的STATUS并不是Pod的phase:
kubectl get pod pi2-ll9dn
NAME READY STATUS RESTARTS AGE
pi2-ll9dn 0/1 Completed 0 4h50m
Pod并没有Completed这个phase。
容器的状态:Container states
相关字段:.status.containerStatuses[index].state(containerStatuses是一个数组,每个数组元素对应Pod中的一个容器)
我们知道,一个Pod中是包含有多个容器的,所以Pod的状态或者说阶段并不能直接反映Pod中容器的状态。当一个Pod被调度到Node上时,kubelet就会开始使用容器运行时(如Docker)创建容器,容器的状态可以通过命令kubectl describe pod [POD_NAME]查看,一共以下3种状态:
- Waiting:容器默认的状态,只要不是Running和Terminated状态就是这个状态,拉取镜像的时候也是这个状态
- Running:表示容器正在正常运行中,如果定义了
postStarthook(钩子),则该hook会在容器进入Running状态前执行 - Terminated:表示容器已经执行完并停止运行。如果定义了
preStop钩子,在一个容器进入Terminated状态前,该钩子会被执行。执行完有两种情况,一种是正常退出,另外一种是因为某种原因失败退出,通过Reason和Exit Code查看容器停止的原因和状态码:State: Terminated Reason: Completed Exit Code:

最低0.47元/天 解锁文章
390

被折叠的 条评论
为什么被折叠?



