Pod基础知识
1. Pod的生命周期
Pod 常见的状态
- Pending:挂起,我们在请求创建pod时,条件不满足,调度没有完成,没有任何一个节点能满足调度条件。已经创建了但是没有适合它运行的节点叫做挂起,这其中也包含集群为容器创建网络,或者下载镜像的过程。
- Running:Pod内所有的容器都已经被创建,且至少一个容器正在处于运行状态、正在启动状态或者重启状态。
- Succeeded:Pod中所以容器都执行成功后退出,并且没有处于重启的容器。
- Failed:Pod中所以容器都已退出,但是至少还有一个容器退出时为失败状态。
- Unknown:未知状态,所谓pod是什么状态是apiserver和运行在pod节点的kubelet进行通信获取状态信息的,如果节点之上的kubelet本身出故障,那么apiserver就连不上kubelet,得不到信息了,就会看Unknown
Pod重启策略
- Always: 只要容器失效退出就重新启动容器。
- OnFailure: 当容器以非正常退出后重新启动容器。
- Never: 无论容器状态如何,都不重新启动容器。
如果pod的restartpolicy没有设置,那么默认值是Always。
Pod运行前和关闭前动作控制
- PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。
- PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等。
2.Pod的三种探针
- startupProbe: k8s1.16新增,指示容器中的应用是否已经启动,该探针只会在容器启动时执行一次,该探针启动时,其他探针被禁用,直到该探测成功为止(初始化探针)
- livenessProbe:指示容器中的应用是否正常运行(存活探针)。
- readinessProbe:指示容器中的应用是否启动完成(就绪探针)。