健康检查是一项关键功能,它允许系统根据预设标准定期检查容器的运行状态。若未配置健康检查,即使容器内部的应用程序发生故障,Pod也可能无法察觉,从而导致服务中断,尽管Pod的状态仍显示为正常。
Kubernetes提供了三种类型的健康检查探针,以应对不同的监控需求:
存活探针(livenessProbe):类似于执行系统级的进程检查(如ps命令),用于确定容器是否仍在正常运行。若存活检查失败,Kubernetes将重启该容器。
就绪探针(readinessProbe):用于评估容器是否已准备好接收流量。对于启动时间较长或依赖外部服务的容器,此探针尤为重要。若就绪检查失败,Kubernetes将阻止流量流向该容器。
启动探针(startupProbe):在容器启动阶段使用,以确保在存活和就绪检查之前,应用程序有足够的时间完成初始化。这有助于避免因启动缓慢而导致的误判重启。
检查机制
HTTP请求检查:适用于提供HTTP/HTTPS服务的容器。Kubernetes将定期发送GET请求至指定路径和端口,若响应码在200至399之间,则视为检查成功。
TCP端口检查:针对提供TCP服务的容器,Kubernetes将尝试建立TCP连接。若连接成功,则检查通过。
执行命令检查:用户可指定容器内的命令,Kubernetes将定期执行该命令。若命令返回0,则检查成功。
注意
执行命令时,需确保所需程序已包含在容器镜像中,且对于shell脚本,需指定脚本解析器。
GRPC检查(仅在特定版本及以上支持):无需暴露HTTP端点或可执行文件,Kubernetes可通过GRPC连接查询应用状态。
配置参数
检测周期(periodSeconds):探针的检测频率,以秒为单位。
延迟时间(initialDelaySeconds):容器启动后,开始健康检查前的等待时间。
超时时间(timeoutSeconds):健康检查的最大等待时间,超过则视为失败。
成功阈值(successThreshold):连续成功次数,达到此值后,将状态更改为成功。
最大失败次数(failureThreshold):探测失败时的重试次数。