Istio利用k8s的探针对service进行流量健康检查,有两种探针可供选择,分别是liveness和readiness:
liveness探针用来侦测什么时候需要重启容器。比如说当liveness探针捕获到程序运行时出现的一个死锁,这种情况下重启容器可以让程序更容易可用。
readiness探针用来使容器准备好接收流量。当所有容器都ready时被视为pod此时ready。比如说用这种信号来控制一个后端服务,当pod没有到ready状态时,服务会从负载均衡被移除。
使用场景:
liveness探针被用来移除异常的pod,不重启pod就无法恢复的应用常使用liveness探针。比如前文提到的死锁,进程会一直处于活跃状态,k8s会认为正常并继续发送流量。但使用liveness探针之后会发现应用已经不再处理请求,继而重启异常pod。
readiness探针被用来控制流量进入pod。比如应用程序需要加载一个大的文件或者需要启动后进行一些配置。但默认只要容器进程启动完成就会有流量发送过来。使用readiness探针会一直等待直到完成所有加载或配置再让流量进入。
两种探针的配置相似,区别在于使用livenessProbe还是readinessProbe字段
探针配置参数:
探针有以下几个参数:
initialDelaySeconds:容器启动之后到启动探针之间的时延
periodSeconds:探针的循环执行时间,最小单位为1秒
timeoutSeconds:探针超时时间,默认值1秒
successThreshold: 成功阈值数,失败之后最小的连续成功信号数,liveness必须是1
failureThreshold:失败阈值数,当探针失败之后,在