k8s-liveness和readness详解
健康检查(health check)是用于检测应用实例是否正常工作,对应用状态的监控,保障业务高可用的一种机制。
k8s健康检测主要分为以下三种:
存活性探测(Liveness probes) :主要是探测应用是否还活着。如果检测到应用没有存活就杀掉当前pod并重启。
就绪性探测(Readiness probes):只要是探测应用是否准备好接受请求访问,如果检测应用准备好了,就把请求流量放进来;反之,则把应用节点从注册中心拿掉。
启动探测(Startup Probes):对于旧应用需要更长的启动时间,这时候既不想重启应用也不想让请求访问进来,可以设置启动探测给足够的启动时间保证应用启动成功。
initialDelaySeconds 表示延迟30S开始第一次探测,默认值是0,最小值是0
timeoutSeconds 表示每次探测的超时时间,35S后如果没返回结果就认为超时失败,默认值是1,最小值是1
successThreshold 表示在探测失败后,最小的连续成功被认为是成功的,默认值是1,最小值是1
failureThreshold 表示当探测失败时,Kubernetes将在认为失败前尝试failureThreshold次数。默认值是3,最小值是1;Liveness认为失败的操作是重启pod,而readiness认为失败的操作是把pod标记为 Unready
periodSeconds 表示多久进行一次探测,默认是10S,最小值是1
liveness和readiness对比及区别
livenessreadiness
配置和参数相同相同
探测失败后的行为重启容器把容器标记为Unready,不接受请求
依赖性二者是相互独立,没有依赖,既可以独立使用,也可以同时使用同liveness
作用判断是否需要重启以实现自愈判断容器是否准备好对外提供服务
初始值成功,防止应用在没成功启动前,被误杀失败,防止应用还没准备好,有请求进来
默认值二者没配置的话,默认状态都是成功
返回值返回值在[200,400)范围内认为成功,返回值5xx认为失败同liveness