这 3 种探针有 3 个不同的用例。这就是为什么我们需要 3 种探针。
活性探针
如果 Liveness Probe 失败,则 pod 将重新启动(阅读有关 failureThreshold 的更多信息)。
用例:如果 pod 已死,则重新启动 pod。
最佳做法:仅在活性探测中包含基本检查。永远不要检查与其他服务(例如数据库)的连接。检查不应该花费太长时间来完成。
始终指定 light Liveness Probe 以确保在 pod 真的死机时重新启动 pod。
启动探针
Startup Probes 检查启动后 pod 何时可用。
用例:一旦 Pod 在启动后可用,就向 Pod 发送流量。 启动探测可能需要更长的时间才能完成,因为它们只在初始化时被调用。他们可能会调用预热任务(但也可以考虑使用 init 容器进行初始化)。
最佳实践:如果 pod 需要很长时间才能启动,请指定 Startup Probe。 Startup 和 Liveness Probe 可以使用相同的端点,但 Startup Probe 的故障阈值不那么严格,可以防止启动失败(s.Kubernetes in Action)。
准备探测
与 Startup Probes 相比,Readiness Probes 检查 pod 在整个生命周期内是否可用。
与 Liveness Probes 相比,如果 Readiness Probes 失败,只会停止到 pod 的流量,但不会重新启动。
用例:停止向 pod 发送流量,如果 pod 由于与另一个服务(例如数据库)的连接失败而暂时无法服务,并且 pod 稍后会恢复。
最佳做法:包括所有必要的检查,包括与其他服务的连接。然而,检查不应该花费太长时间来完成。
始终指定 Readiness Probe 以确保 pod 仅获得流量,前提是 pod 可以正确处理传入请求。
文档