首页 > kubernetes(k8s) > Pod的生命周期
2019
07-16

Pod的生命周期

简述一下上图:

  • 1.kuctl向kubeApi发送指令
  • 2.kubeApi会调用到kubelet(调度过程是通过etcd来完成的)
  • 3.kubelet会对应操作cr
  • 4.cr去完成容器环境的初始化,初始化过程中它会启动一个pause的基础容器,这是google给我们做的一个非常经典容器,他负责我们的网络和存储卷的共享,就是说同一个pod中,里面所有的容器都是共享的
  • 5.接着cr会进行一个或者多个init C(容器)的初始化(这取决于你的pod中有多少个容器),当然init C也可以没有,Init C在初始化完成后要是正常退出,退出码会是0,如果是非0则是不正常退出。(前一个Init C如果没有正常退出,后一个是不会继续执行的)如果Pod的Init容器失败,kubernetes会不断重启该Pod(重启pod所有的Init都会重新执行),直到Init容器成功为止.然而如果Pod对应的restartPolicy为Never,他则不会重新启动
  • 多个初始化的容器步骤完成后,就会进入MainC的运行了
  • 在mainC刚start(启动)的时候,会允许他去执行一条命令或者一个命令脚本
  • mainC在stop(关闭)的时候,也会允许他去执行一条命令,也就是我在退出的时候,我接下来要怎么办,交代后事
  • 在start(启动)和stop(关闭)的过程中,会有readines和Liveness的参与
  • readlines在容器运行多少秒后进行探测,在readines没有进行就绪检测之前,pod的状态不可能为running或者Read,当readlines检测之后,这个pod的状态才会变成running或者Read,在这个过程当中还有Liveness的参与。
  • liveness他会伴随整个的主容器的生命周期,当主容器进程跟liveness检测结果不一致的时候,比如主容器出现损坏了或者不能正常工作了,那我就可以执行对应的重启,或者删除命令,这跟我们设定的策略有关

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。