为什么我在kubernetes中需要3种不同类型的探针:startupProbe、readinessProbe、livenessProbe

为什么我在 kubernetes 中需要 3 种不同类型的探针:

  • 启动探针
  • 就绪探针
  • 活性探针

有一些问题(k8s - livenessProbe 与 readinessProbe,设置就绪、活跃或启动探测器)和关于这个主题的文章。但这不是很清楚:

  • 为什么我需要 3 种不同类型的探头?
  • 有哪些用例?
  • 什么是最佳做法?

回答

这 3 种探针有 3 种不同的用例。这就是为什么我们需要 3 种探针。

活性探针

如果Liveness Probe失败,pod 将重新启动(阅读有关 failureThreshold 的更多信息)。

用例:如果 pod 已死,则重新启动 pod。

最佳实践:仅在活性探测中包含基本检查。永远不要检查与其他服务(例如数据库)的连接。检查不应花费太长时间才能完成。如果 pod真的死了,请始终指定一个light Liveness Probe以确保 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相比,只有到 pod 的流量才会停止,如果Readiness 探针失败,但不会重启。

用例:停止向 Pod 发送流量,如果 Pod 由于与另一个服务(例如数据库)的连接失败而暂时无法提供服务,并且 Pod 将在稍后恢复。

最佳实践:包括所有必要的检查,包括与其他服务的连接。尽管如此,检查不应花费太长时间才能完成。如果 Pod 可以正确处理传入的请求,请始终指定Readiness Probe以确保 Pod 仅获取流量。

文档

  • 这篇文章很好地解释了三种探针之间的区别。
  • 该官方kubernetes文档提供了有关所有配置选项很好的概述。
  • 探针的最佳实践。
  • Kubernetes in Action一书提供了有关最佳实践的最详细见解。

以上是为什么我在kubernetes中需要3种不同类型的探针:startupProbe、readinessProbe、livenessProbe的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>