三种探针作用不同,并非多余,都有对应的应用场景 startupProbe: # 启动检查,该策略只会在启动的时候,成功的运行一次 readinessProbe: #就绪检查,容器内应用检查,该策略 伴随者整个pod生命周期,失败 则ip和port从k8s节点列表中移除 livenessProbe: #存活检查,容器检查,该策略伴随者整个pod生命周期,失败会重启
startupProbe,只执行一次,该调用可以用来检测初始化功能配置环境是否正常等代码逻辑,不正常就执行重启策略 :restartPolicy
readinessProbe:当出现网络波动,或者假死时,迅速发现并移除该pod,极低的影响服务正常使用,恢复后会再加入,不会重启
livenessProbe: 应用宕机,接口多次不通,则进行重启 执行重启策略 :restartPolicy
livenessProbe: #存活检查,容器检查 该策略 伴随者整个pod生命周期 失败会重启
initialDelaySeconds: 10 # 容器启动后第一次执行探测是需要等待多少秒 默认是 0 秒,最小值是 0
failureThreshold: 5 #检测失败10次表示未就绪
httpGet:
path: /healthz
port: 8085
scheme: HTTP
periodSeconds: 10 # 执行探测的时间间隔(单位是秒),默认为 10s,单位“秒”,最小值是 1 重试时间间隔
timeoutSeconds: 1 # 探针执行检测请求后,等待响应的超时时间,默认为 1s,单位“秒”,最小值是 1 超时时间
readinessProbe: #就绪检查,容器内应用检查,该策略 伴随者整个pod生命周期 失败 ip和port从 k8s节点列表中移除
initialDelaySeconds: 10 # 容器启动后第一次执行探测是需要等待多少秒 默认是 0 秒,最小值是 0
failureThreshold: 1 #检测失败1次表示未就绪
httpGet:
path: /healthz
port: 8085
scheme: HTTP
periodSeconds: 1
timeoutSeconds: 1
startupProbe: # 启动检查,该策略只会在启动的时候,成功的运行一次
initialDelaySeconds: 10 # 容器启动后第一次执行探测是需要等待多少秒 默认是 0 秒,最小值是 0
failureThreshold: 20 #检测失败20次表示未就绪,防止刚启动假死 ,20*20=400s > 要大于启动时间 防止有些项目启动时间非常长
httpGet:
path: /log-health
port: 8085
scheme: HTTP
periodSeconds: 20
successThreshold: 1 #探针检测失败后认为成功的最小连接成功次数,默认为 1s,在 Liveness 探针中必须为 1s,最小值为 1s。
timeoutSeconds: 1 #探针执行检测请求后,等待响应的超时时间,默认为 1s,单位“秒”,最小值是 1
K8S yaml添加配置 lifecycle: preStop: exec: command: [ "sh", "-c", "sleep 10" ] #set prestop hook 在开始删除 pod 之前留出足够的时间来更新网络规则 terminationGracePeriodSeconds: 45 # terminationGracePeriodSeconds 终止宽限期为秒
springBoot 添加配置
#开启springboot优雅停机,超时时间30s
server.shutdown = graceful
spring.lifecycle.timeout-per-shutdown-phase = 30s