容器环境初始化 pause c-(网络和数据卷初始化)-->init c 1---->init c 2--->man c、 start、 stop、 readness(就绪检测)、 liveness(生存检测)
1. init C
示例: Example002:
/root/yaml/001_pod_rs_deployment_svc/002_00_init_pod.yaml
/root/yaml/001_pod_rs_deployment_svc/002_01_myservice.yaml
/root/yaml/001_pod_rs_deployment_svc/002_02_mydb.yaml
1)在(pause c)之后,Init容器会按照顺序启动(即init c 1容器启动成功并退出,init c 2才会启动)
2)如果init c启动失败,kubernetes会不断地重启该Pod,直到成功。如果Pod的restartPolicy为Never,则不会重启
3)init 使用的整个资源,不受名称空间资源范围限制
3)Init容器的端口不会在Service中进行聚集。正在初始化中的Pod处于Pending状态,但应该会将Initializing状态设置为true
4)如果Pod重启,所有Init容器会重新执行。(所以,pod定义要Init每次运行的结果必须是一样的)
5)kubectl edit pod 对InitContainers的修改仅限于image字段,修改其他字段都不会生效。更改后,会重启所在Pod
2.容器探针
探针是在容器内部定义的诊断程序。由kubelet完成对容器的定期诊断。
诊断程序有三种类型:
ExecAction: 容器内执行指定的命令。返回码为0 , 成功
TCPSocketAction:对容器的TCP端口进行检查。端口打开,成功
HTTPGetAction:对容器进行HTTP Get请求。响应码大于等于200 且小于400,成功
探测结果:成功,失败,未知(诊断失败,不采取任何行动。可认为是挂死)
探针分类:
readinessProbe: 就绪探针,指示容器是否就绪。失败,端点控制器将从与Pod匹配的所有Service的端点中删除该Pod的IP地址。初始延迟之前的就绪状态默认为Failure。如果容器不提供就绪探针,则默认状态为Success
livenessProbe:存活探针,指示容器是否存活。失败,则kubelet会杀死容器,并且容器将受到其restartPolicy 的影响。如果容器不提供存活探针,则默认状态为 Success
示例: Example003: readinessProbe
/root/yaml/001_pod_rs_deployment_svc/003_readinessProbe-httpget.yaml
每个60s会重启一次
示例: Example004: livenessProbe
/root/yaml/001_pod_rs_deployment_svc/004_livenessProbe-exec.yaml
3.启动动作(start)、退出动作(stop):lifecycle
示例: Example005:
/root/yaml/001_pod_rs_deployment_svc/005_lifecycle-demo.yaml
4.Pod的状态值
挂起(Pending):Pod已经被 Kubernetes接受,但有一个或者多个容器镜像尚未被创建。等待时间包括
调度pod的时间和通过下载镜像过的时间
运行中(Runing):该Pod已经绑定到一个节点上,Pod中所有的容器都已经被创建。至少有一个容器正在运行,或者处于启动或者重启状态
成功(Success):Pod中的所有容器都被成功终止,且不会再重启
失败(Failed):Pod中的所有容器都已经终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止
未知(Unknow):因为某些原因无法取得Pod的状态,通常是因为与Pod所在主机通信失败