注意:以下文档只适用于TOP接口,请谨慎使用!
在容器集群K8S中,主要通过liveness(应用存活)和readiness(应用就绪)两种探针来探测Pod内容器的运行情况。
探针的检查有如下三种方式:
1)ExecAction,脚本检查,在容器中执行特定的命令,命令退出返回0表示Success;
2)HTTPGetAction,HTTP检查,发起一次HTTP请求,如果返回码为200表示Success;
3)TCPSocketAction,TCP检查,根据容器IP地址及特定的端口进行TCP检查,端口开放表示Success。
目前聚石塔支持脚本检查和HTTP检查。
liveness探针用来检测容器是否正常运行。如果存活探测失败,集群认为容器运行异常,会对其进行重启。如果不设置存活探针,则默认状态为 Success(正常运行)。
liveness探针适用于重启容器能够恢复应用的场景。例如,一个JAVA应用jvm因为OOM宕掉,如果没有配置存活探针,则应用会一直挂掉;如果配置了存活探针,且探针检查为Failure,则集群自动重启容器,重启后java应用恢复正常。(当然,最佳的方式是调整JVM参数、调整容器规格。不过存活探针的设置一定程度上保证了应用的可用)
readiness探针被用来控制流量进入pod,表示容器是否准备好服务请求。比如应用程序需要加载一个大的文件或者需要启动后进行一些配置。默认情况下,只要容器进程启动完成就会有流量发送过来。如果配置了就绪探针,则集群会一直等待直到就绪探针返回Success。如果不设置就绪探针,则默认状态为 Success(流量可进入)。
1. 如果容器启动时间较长,可以调整“检查延迟”;
2. 如果检查的执行较长,可以调整“超时时间”。
配置解释
上面健康检查配置的“应用存活探针”可以翻译为:在容器开始启动的10s(检查延迟)后,开始健康检查,每10s(检查间隔)检查一次,检查时间超过1秒(超时时间)就超时算失败,如果连续失败了8次(失败次数阈值),就算彻底失败,这时候要重启容器;但如果成功了1次(成功次数阈值),就算成功了;
所以如果在 10s + 8 * 10s内都没有一次成功的健康检查,就会重启容器。
可以不配置,不配置则默认容器运行正常,健康检查为Success。此时无法利用集群的重启策略,需要自行保证应用可用性。
可以不配置,不配置则默认容器就绪ready,健康检查为Success。例如,对应用做了一个SLB流量接入,应用容器启动后就会有流量进入容器内。