就绪探针:readinessProbe
什么是readinessProbe
readinessProbe: 当Pod需要开始接收流量时,“kubelet” 将定期检查 readinessProbe,如果该probe处于成功状态,则容器视为就绪,并将 Pod 标记为已就绪状态。换句话说,readinessProbe 确认 Pod 是否已准备好处理传入请求,并告诉 Service Proxy 可以将流量路由到此 Pod。
readinesProbe的使用场景
- 确保容器已经成功启动,并准备好接收流量。
- 防止请求被发送到未就绪的容器实例,从而避免由于部署尚未完成而导致服务不稳定或不可用。
- 在多个同类型的 Pod 实例中动态地自动负载均衡请求,以实现高伸缩性和高可用性。
- 对于需要较长时间启动的应用程序来说,能够在容器完全启动并愿意接收传入请求之前延迟接收流量和负载可以保证应用的可靠性。
例子
存活探针: livenessProbe
什么是livenessProbe
livenessProbe:让 “kubelet” 检查容器是否仍在运行。如果容器返回失败的 livenessProbe,则 “kubelet” 将把其容器杀死,并尝试根据指定 Pod 的重启策略(例如“Always”或“OnFailure”)重新启动该容器。如果容器无法解决 livenessProbe 失败,则意味着容器内的应用程序发生了致命错误,并且 Pod 需要重新启动。
livenessProbe的使用场景
- 检测容器是否还在运行。
- 如果容器停止响应某些请求,则自动将其重启,以解决应用程序出现错误并退出的情况。
- 当发生死锁或内存泄漏时,在不再消耗计算资源的前提下快速终止容器。
例子:
总结
- 通常情况下,readinessProbe 用于检查服务是否可用,而 livenessProbe
用于检查应用程序是否出现故障。通过合理配置 readnissProbe 和 livenessProbe,可以提高服务的稳定性和高可用性。