K8S探针分享
livenessProbe:存活探针,用于判断容器是不是健康;如果探测失败,Kubernetes就会重启容器。readinessProbe:就绪探针,用于判断是否可以将容器加入到Service负载均衡池中,对外提供服务。区别:如果提供了启动探测,其他两个探针将会被暂时禁用,直到满足配置,启动探针满足一次探测后,后续不再进行探测。上图中的配置如果容器启动时间超过20s,就会启动重启策略。如果调高失败
一,探针介绍
1 探针类型
livenessProbe:存活探针,用于判断容器是不是健康;如果探测失败,Kubernetes就会重启容器。
readinessProbe:就绪探针,用于判断是否可以将容器加入到Service负载均衡池中,对外提供服务。
startupProbe:启动探针,判断容器内的应用程序是否已启动。
区别:如果提供了启动探测,其他两个探针将会被暂时禁用,直到满足配置,启动探针满足一次探测后,后续不再进行探测。
使用场景:启动探针使用避免容器重启陷入死循环

上图中的配置如果容器启动时间超过20s,就会启动重启策略。如果调高失败次数,服务挂了以后不能及时重启服务。
2 配置参数
|
initialDelaySeconds |
探针初始等待时间,默认是 0 秒 |
|
periodSeconds |
探测的时间间隔。默认是 10 秒。 |
|
timeoutSeconds |
探测的超时时间。默认值是 1 秒。 |
|
successThreshold |
探测的成功数。默认值是 1。 |
|
failureThreshold |
探测的失败数。默认值是3。 |
3 探针方式
|
httpGet |
请求接口,类似于curl -I HTTP://podIP:8080/health/liveness接口,返回数值在>=200且<=400代表成功 |
|
tcpSocket |
连接容器的 80 端口,类似于telnet 80端口 |
|
exec |
执行 shell 命令 |
tcpSocket方式:

httpGet方式:

exec方式:

二,spring-boot-starter-actuator
1 K8s探针和spring-boot-starter-actuator联系

2 使用配置
引入依赖:

开启配置:

3 应用测试
存活探针接口:

就绪探针接口:

4 原理分析
健康指标:

org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration

org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator#doDataSourceHealthCheck


org.springframework.boot.actuate.redis.RedisHealthIndicator


5 自定义健康指标
实现healthIndicator接口:

状态映射:

参考来源:Spring Boot Actuator: Production-ready Features
https://spring.io/blog/2020/03/25/liveness-and-readiness-probes-with-spring-boot
更多推荐



所有评论(0)