k8s-livenessProbe与ReadinessProbe

Kit*_*son 6 kubernetes

考虑一个通过/health端口80 上的http端点进行运行状况检查的pod,它准备就绪并为流量提供服务大约需要60秒。

readinessProbe:
  httpGet:
    path: /health
    port: 80
  initialDelaySeconds: 60
livenessProbe:
  httpGet:
    path: /health
    port: 80
Run Code Online (Sandbox Code Playgroud)

问题:

  • 我的上述配置是否符合给定要求?
  • 活动探针仅在准备就绪后才能开始工作吗?换句话说,我认为一旦POD准备就绪,就绪探测工作就完成了。之后,liveprobe会进行健康检查。在这种情况下,我可以忽略initialDelaySecondsfor livenessProbe。如果它们是独立的,那么在吊舱本身尚未准备就绪时检查livenessProbe的意义何在!?
  • 检查此文档。他们是什么意思

如果希望您的Container能够自行拆卸进行维护,则可以指定一个就绪探针,以检查特定于与活跃探针不同的就绪端点。

我以为,仅当livenessProbe失败时,运行中的吊舱才会自行倒下。不是readinessProbe。医生说另一种方式。

澄清!

fgu*_*gul 19

我从第二个问题开始回答。第二个问题是:

活性探针是否只有在 pod 准备就绪后才开始工作?换句话说,我假设一旦 POD 准备好,准备探测工作就完成了。之后 livenessProbe 负责健康检查。

我们最初的理解是 liveness probe 会在 readiness probe 成功后开始检查,但事实并非如此。它为这个挑战打开了一个问题。Yon 可以看看这里。然后通过添加启动探针解决了这个问题

总结:

  • 活性探针

livenessProbe:指示容器是否正在运行。如果活性探测失败,kubelet 会杀死 Container,并且 Container 会受到其重启策略的约束。如果容器不提供活性探测,the default state is Success.

  • 就绪探针

readinessProbe:指示容器是否准备好为请求提供服务。如果就绪探测失败,端点控制器会从与 Pod 匹配的所有服务的端点中删除 Pod 的 IP 地址。初始延迟之前的默认就绪状态为失败。如果容器不提供就绪探测,the default state is Success.

  • 启动探针

startupProbe:指示容器内的应用程序是否启动。如果提供了启动探测器,则禁用所有其他探测器,直到它成功。如果启动探测失败,kubelet 会杀死 Container,并且 Container 会受到其重启策略的约束。如果 Container 不提供启动探测器,the default state is Success

抬头看这里


Ran*_*ndy 8

活动性探针将检查容器是否已启动并处于活动状态。如果不是这种情况,kubernetes最终将重新启动容器。

反过来,就绪探针还会检查依赖关系,例如数据库连接或您的容器要完成其工作所依赖的其他服务。作为开发人员,您需要在这里花更多的时间在实施上,而不仅仅是活动性探针。您必须公开一个端点,该端点在查询时还要检查提到的依赖项。

您当前的配置使用活动性探针通常使用的运行状况终结点。它可能不会检查您的服务是否真的准备好接受流量。

Kubernetes依赖于准备情况探针。在滚动更新期间,它将使旧容器保持运行状态,直到新服务声明已准备好接受流量为止。因此,准备情况探针必须正确实施。


Mos*_*ael 7

我将通过几个简单的点来展示它们之间的区别:

\n

活性探针

\n
 livenessProbe:\n      httpGet:\n        path: /healthz\n        port: 8080\n      initialDelaySeconds: 3\n      periodSeconds: 3\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 它用于指示容器是否已启动以及是否处于活动状态,即可用的证明。
  • \n
  • 在给定的示例中,如果请求失败,它将重新启动容器。
  • \n
  • 如果未提供,则默认状态为成功。
  • \n
\n

准备状态探测

\n
 readinessProbe:\n      httpGet:\n        path: /healthz\n        port: 8080\n      initialDelaySeconds: 3\n      periodSeconds: 3\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 它用于指示容器是否已准备好提供流量服务或未准备好使用。
  • \n
  • 它检查依赖项,例如数据库连接或容器完成其工作所依赖的其他服务。
  • \n
  • 在给定的示例中,在请求返回 Success 之前,它将不会提供任何流量(通过从与 Pod 匹配的所有服务的端点中删除 Pod\xe2\x80\x99s IP 地址)。
  • \n
  • Kubernetes 在滚动更新期间依赖于就绪性探测,它使旧容器保持正常运行,直到新服务声明它已准备好接收流量。
  • \n
  • 如果未提供,则默认状态为成功。
  • \n
\n
\n

概括

\n

Liveness Probes:用于检查容器是否可用且处于活动状态。

\n

就绪探针:用于检查应用程序是否已准备好使用并为流量提供服务。

\n


cod*_*ger 0

活性探针是一种相对专业的工具,您可能根本不需要它。然而,据我所知,他们完全独立运行。