Kubernetes-05-容器健康检测

关于健康检测这边,会具体讲述K8S自身如何对Pod进行健康存活检测,如何可以对应用进行存活和健康检测。让应用在K8S上实现完美的无缝切换,实现更为安全、零停服的版本滚动升级

K8S默认的健康检测,主要监测Pod启动的进程,进程退出返回码非0就是代表故障,需要根据重启策略执行
restartPolicy: 默认Always,可选OnFailure

但是经常应用程序的故障场景是,比如内存溢出,系统进程还在但无法对外提供服务了,这种情况K8S的默认规则就无法识别,需要使用
Liveness探测

Liveness探测

使用livenessProbe指定自定义健康的条件:

  • initialDelaySeconds是程序初始化后多久开始做Liveness探测
  • periodSeconds 探测检测周期

Readiness探测

  • Liveness是告诉容器什么情况pod需要通过重启后自愈
  • Readiness是告诉容器什么情况下应用已经启动完成具备对外提供服务的能力
  • 使用ReadinessProbe指定自定义健康的条件
    • initialDelaySeconds是程序初始化后多久开始做Readiness探测
    • periodSeconds 探测检测周期
  • Pod的状态会从not ready到ready,ready后就代表可以对外提供服务

Liveness和Readiness

采用一致的配置格式,可以使用exec:command 或者httpGet 进行配置,httpGet返回值在200400之间是正常的,如果非200400就是非就绪,连续3次失败就会将服务从负载均衡中移除,无法再访问,直到下次成功再加入

readinessProbe:
  httpGet:
    schema: HTTP
    path: /health
    port:8080
  initialDelaySeconds: 10
  periodSeconds: 5  

springboot 2.3.X 自动兼容K8S的Liveness & Readiness探测

HealthCheck的功能

ScaleUp中,当一个Pod符合Readiness验证,才加入负载均衡中对外提供服务,避免无效的请求

RollingUpdate中,可以避免服务更新期间应用尚未启动加载完全就认为Pod启动完成,持续替换,导致可能最终无法对外提供服务。Redisness探测可以检测到应用真实能提供服务后,再向后逐步替换,达到真正的不停服。异常的副本无法加入负载均衡,不会对外提供服务。

maxSurge:
参数控制滚动更新过程中副本总数超过DESIRED的上限
因为DESIRED是目标可用值,滚动更新中最终可用的Pod数,在感动更新的过程中,会新增并行更新的Pod数。向上取整,最大默认是Desired数量的*25%,控制初始创建的新副本数
资源充足可以配置多一些,那整体资源占用会多,但更新流程变快

maxUnavailable:
参数控制滚动更新过程中不可用副本占DESIRED的最大比例,向下取整,最大默认是Desired*25%,控制初始销毁的旧副本数

strategy:
  rollingUpdate:
    maxSurge: 35%
    maxUnavailable: 35%
  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

c_zyer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值