K8S探针健康检查与优雅停机最佳实践

三种探针作用不同,并非多余,都有对应的应用场景


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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾宝玉的贾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值