Liveness 探测让用户能够自定义判断容器是否健康的条件。若是探测失败,Kubernetes 就会重启容器。html
仍是举例说明,建立以下 Pod:学习
启动进程首先建立文件 /tmp/healthy
,30 秒后删除,在咱们的设定中,若是 /tmp/healthy
文件存在,则认为容器处于正常状态,反正则发生故障。3d
livenessProbe
部分定义如何执行 Liveness 探测:日志
探测的方法是:经过 cat
命令检查 /tmp/healthy
文件是否存在。若是命令执行成功,返回值为零,Kubernetes 则认为本次 Liveness 探测成功;若是命令返回值非零,本次 Liveness 探测失败。code
initialDelaySeconds: 10
指定容器启动 10 以后开始执行 Liveness 探测,咱们通常会根据应用启动的准备时间来设置。好比某个应用正常启动要花 30 秒,那么 initialDelaySeconds
的值就应该大于 30。htm
periodSeconds: 5
指定每 5 秒执行一次 Liveness 探测。Kubernetes 若是连续执行 3 次 Liveness 探测均失败,则会杀掉并重启容器。blog
下面建立 Pod liveness
:进程
从配置文件可知,最开始的 30 秒,/tmp/healthy
存在,cat
命令返回 0,Liveness 探测成功,这段时间 kubectl describe pod liveness
的 Events
部分会显示正常的日志。get
35 秒以后,日志会显示 /tmp/healthy
已经不存在,Liveness 探测失败。再过几十秒,几回探测都失败后,容器会被重启。it
除了 Liveness 探测,Kubernetes Health Check 机制还包括 Readiness 探测,这是咱们下一节要学习的内容。
书籍:
1.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html