kubernetes_02_资源清单_02_Pod生命周期_20190918

容器环境初始化 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所在主机通信失败

发布了16 篇原创文章 · 获赞 0 · 访问量 71

猜你喜欢

转载自blog.csdn.net/wuyuezhengbian/article/details/105003563