k8s的就绪探针和存活探针

k8s的就绪探针和存活探针

就绪探针和存活探针

探针的作用

  • 就绪探针:一个应用往往需要一段时间来预热和启动,比如一个后端项目的启动需要连接数据库执行数据库迁移等等,一个Spring项目的启动也需要依赖Java虚拟机。即使该过程已启动,您的服务在启动并运行之前也无法运行。应用在完全就绪之前不应接收流量,但默认情况下,Kubernetes会在容器内的进程启动后立即开始发送流量。通过就绪探针探测,直到应用程序完全启动,然后才允许将流量发送到新副本。
  • 存活探针:让我们想象另一种情况,当我们的应用在成功启动以后因为一些原因“宕机”,或者遇到死锁情况,导致它无法响应用户请求。 在默认情况下,Kubernetes会继续向Pod发送请求,通过使用存活探针来检测,当发现服务不能在限定时间内处理请求(请求错误或者超时),就会重新启动有问题的pod。

Kubernetes提供了两种探针来检查容器的状态,对于检测到故障服务会被及时自动下线,以及通过重启服务的方式使服务自动恢复

  • Liveliness:存活探针,判断容器是否处于正在运行状态。当服务crash或者死锁等情况发生时,k8s会kill掉容器,然后根据其设置的restart policy进行相关的操作(可能会在本机重新启动容器,或者因为设置k8s QoS,本机没有资源情况下会被分发到其他机器上重新启动)
  • Readiness:就绪指针,判断服务是否已经正常工作(即查看容器是否准备好接受Http请求),如果服务没有加载完成或工作异常,服务所在的Pod的IP地址会从服务的Endpoint中移除。也就是说,如果服务没有ready时,会将其从服务的load balancer中移除,不会再接受或响应任何请求。

探测结果:成功(Success)、失败(Failure)、未知(Unknown)

探针类型

探针类型说明健康检查标准
ExecAction容器内部执行shell命令进行探测shell命令返回0
TCPSocketAction通过容器的IP、端口执行TCP进行检查端口是否打开
HTTPGetAction通过容器的IP、端口、path路径,用http GET方式请求进行检查200<=响应码<400

服务可用性和自动恢复

  • 如果就绪探针(readiness)健康检查失败,故障的服务实例从service endpoint中下线,外部请求将不再转发到该服务上,一定程度上保证正在提供服务的服务的正确性,如果服务自我恢复了(比如网络问题),会自动重新加入service endpoint对外提供服务。
  • 如果设置了存活探针(liveliness),对故障服务的容器探测失败,容器会被kill掉,并根据设置的容器重启策略,进行重启容器或在其他机器上重新创建pod。

使用建议

  • 一般故障发生后,先下线,再重启。重启后服务正常再上线。所以一般建议设置检查服务(readiness)的时间短于检查容器(liveness)的时间,也可以将检查服务(readiness)的探针与容器(liveness)的探针设置为一致。
  • 目的是故障服务先下线(readiness的作用),如果过一段时间还无法自动恢复,那么根据重启策略进行重启(liveness的作用)。

Pod的重启策略:

当pod中一个container处于退出状态(Exited)时,kubelet会根据Pod Spec中设置restartPolicy进行相应操作,重启的策略分别如下:

  • Always: 默认的重启策略,只要有一个container处于Exited时,即会重启
  • OnFailure:container退出状态不为0时,即会重启。
  • Never: 从不重启。

需要重点说明的是:

  • 一个pod设置重启策略,适用于pod中全部container。
  • 处于退出状态的容器由 kubelet 以五分钟为上限的指数衰减延迟(10秒,20秒,40秒…)重新启动,并在container重启成功十分钟后会重置该值。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值