Kubernetes Pod的生命周期(Lifecycle)

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状态前,该钩子会被执行。执行完有两种情况,一种是正常退出,另外一种是因为某种原因失败退出,通过ReasonExit Code查看容器停止的原因和状态码:
    State:          Terminated
       Reason:       Completed
       Exit Code:    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值