赞
踩
所谓的pod生命周期就是说pod这个资源对象从开始创建到结束整个的一个流程,在流程当中会经历如下阶段。
1、启动pause容器; (/ pɔːz/ 暂停)
2、初始化容器(initContainers);
3、创建主容器(containers)包括:
3.1、容器启动后钩子;
3.2、启动探测、就绪性探测,存活性探测;
3.3、容器停止前钩子。
pause容器
重要概念:Pod内的容器都是平等的关系,共享Network Namespace、共享文件
pause容器的最主要的作用:创建共享的网络名称空间,以便于其它容器以平等的关系加入此网络名称空间;
pause进程是pod中所有容器的父进程(即第一个进程);
Init容器
Init容器就是做初始化工作的容器。可以有一个或多个,如果多个按照定义的顺序依次执行,只有所有的执行完后,主容器才启动。由于一个Pod里的存储卷是共享的,所以Init Container里产生的数据可以被主容器使用到,Init Container可以在多种K8S资源里被使用到,如Deployment、DaemonSet, StatefulSet、Job等,但都是在Pod启动时,在主容器启动前执行,做初始化工作。
主容器
1)容器钩子
初始化容器启动之后,开始启动主容器,在主容器启动之前有一个post start hook(容器启动后钩子)和pre stop hook(容器结束前钩子)
PostStart
该钩子在容器被创建后立刻触发,通知容器它已经被创建。如果该钩子对应的hook handler执行失败,则该容器会被杀死,并根据该容器的重启策略决定是否要重启该容器,这个钩子不需要传递任何参数
PreStop
该钩子在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。在该钩子对应的hook handler完成后不论执行的结果如何,Docker daemon会发送一个SGTERN信号量给Docker daemon来删除该容器,这个钩子不需要传递任何参数
2)容器探针
livenessProbe(存活性探测)
指示容器是否正在运行。如果存活性探测失败,则kubelet会杀死容器,并且容器将受到其重启策略的影响。如果容器不提供存活探针,则默认状态为Success。
readinessProbe(就绪性探测)
指示容器是否准备好服务请求。如果就绪性探测失败,端点控制器将从与 Pod匹配的所有Service的端点中删除该Pod的IP地址。初始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状态为 Success
k8s三种探针的区别?
启动探针失败,Kubernetes 将会认为容器启动失败,并可能会根据配置进行重试或者标记容器为失败状态。工作周期:一次性
就绪探针失败,Kubernetes 将会认为容器尚未准备好处理流量,因此不会将流量路由到该容器。工作周期:定期
存活探针失败,Kubernetes 将会认为容器出现了问题,并且可能需要重启容器来恢复其正常状态。工作周期:定期
--------------------------------
在整个生命周期中,Pod会出现5种状态(相位),分别如下
考虑到 Pod 可以包含多个容器,每个容器的状态都会影响 Pod 的状态。例如,如果一个 Pod 中有两个容器,其中一个容器处于 Running 状态,另一个容器处于 Failed 状态,那么该 Pod 的状态就是 Failed。
=================================
参考:
https://www.cnblogs.com/guangdelw/p/17143591.html Pod生命周期
kubernetes pod的生命周期 - 掘金 kubernetes pod的生命周期
了解pod和pod的生命周期-这一篇文章就够了-阿里云开发者社区
https://www.cnblogs.com/Lqdream/p/16993700.html k8s原理之-Pod状态和生命周期管理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。