在Kubernetes(K8s)中,Pod可以配置三种类型的探针来监控容器的运行状态:
- 存活探针(LivenessProbe):
- Liveness探针用于检查容器是否仍处于正常运行状态。如果liveness探针连续多次失败(未通过健康检查),Kubernetes会认为该容器内部已经发生无法恢复的错误,kubelet会终止并重新启动该容器。这种机制确保了即使应用程序遇到问题导致其卡死或进入不稳定状态时,也能被自动重启以恢复服务。
- 就绪探针(ReadinessProbe):
- Readiness探针用来判断容器是否准备好接收请求流量。当容器成功通过readiness探针检查时,对应的Pod会被标记为“Ready”状态,并开始接受路由至其服务的客户端请求。对于那些需要初始化或者加载数据后才能正确处理请求的应用程序来说,readiness探针至关重要,它能确保只有真正准备好的容器才会参与到对外提供服务的过程。
- 启动探针(StartupProbe)(自Kubernetes 1.16版本引入):
- Startup探针用于检测容器应用是否完成启动过程。如果设置了startup probe,在应用完全启动之前,它会替代liveness和readiness探针的功能。只有当startup probe成功执行并通过之后,其他两种探针才开始生效。这有助于避免在容器初始化过程中由于短暂的服务不可用而被误判为故障并被重启的情况。
综上所述,每种探针都可以根据不同的场景选择HTTP GET、TCP Socket连接或执行命令的方式进行健康检查,并且可以通过设置超时时间、重试次数以及成功的阈值等参数来精确控制探测行为。这些探针共同作用于容器的不同生命周期阶段,保障了Pod内的应用程序始终能够按预期稳定运行和服务。