kubernetes

Pod的生命周期

2019-08-05  本文已影响0人  davisgao

1.POD生命周期中的各个阶段

POD中明确规定了如下几个阶段

实际上还有一中状态Terminating,在代码和文档中都没有说明,但却是存在。这种情况出现杂无法获取所在主机的资源情况,一直在尝试建立连接。

[root@node1 yaml]# kubectl -n ovn-kubernetes get pod 
NAME                              READY   STATUS        RESTARTS   AGE
ovnkube-db-79f656485c-dkr87       2/2     Running       2          38h
ovnkube-master-7b4bb48cd5-rgl95   2/2     Running       15         38h
ovnkube-node-fqc44                0/3     Terminating   0          39m

2.POD的conditions

PodStatus中包含一系列的condition,condition是否通过决定着POD的状态,其中每个condition包含如下几个属性

lastProbeTime: 探针最后一次探测时间
lastTransitionTime:从上一个最近状态转化过来的时间
message:人为原因导致的转换信息
reason:最后一次状态转换的原因
status:当前condition的状态True,False, Unknown
type:PodScheduled(已经被调度到节点),Ready(服务已准备好可以提供服务,readiness 探针检测到后可以被添加到LB),Initialized(所有容器已经启动成功),Unschedulable(由于资源或者约束没有合适的节点可调度),ContainersReady(所有容器都已准备好)

3.POD中容器的状态

Waiting:默认状态,如果容器即没有运行也没有终止就处于Waiting,处于Waiting状态的容器,一般是在拉去镜像,获取配置,认证等。
Running:表示容器没有任何问题,处于运行状态,并显示运行时间,此时postStart也被成功执行
Terminated:表示容器完成相关的动作或者由于某些原因而失败导致终止,不过都会显示退出码,以及开始时间和完成时间。同样的在进入这个状态之前preStop也会被执行。

4.POD中容器的hook

hook主要用于容器启动的各个环节做相应的处理动作,容器的hook主要有两个

应用场景

数据初始化,优雅退出等

实例

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-hook-demo
spec:
  containers:
  - name: lifecycle-hook-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", " echo excute after container is created > /usr/share/message"]
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s","quit"]

5.POD中的探针

READINESS

LIVENESS

6.POD中的重启策略

策略针对POD内的所有容器有效,相对POD内的容器属于全局配置,但不是所有节点,只和节点上的一个POD相关。重启的周期随着次数变化(10s, 20s, 40s )

上一篇 下一篇

猜你喜欢

热点阅读