Kubernetes 的健康检查方案及最佳实践

· 约 6 分钟读完

在 Kubernetes 中,健康检查是保证应用程序在容器内正常运行的关键。本文将介绍 Kubernetes 中的健康检查方案及最佳实践,包括 Liveness Probe、Readiness Probe 和 Startup Probe。

Liveness Probe

Liveness Probe 用于检查容器是否存活。如果容器内的进程崩溃或被挂起,Liveness Probe 将会检测到并重启容器。Liveness Probe 的配置如下:

上面的配置指定了一个 HTTP GET 请求,检查路径为 /healthz,端口为 8080。如果容器内的进程无法响应该请求,Liveness Probe 将会在每 10 秒钟运行一次,直到连续失败 3 次为止。在容器启动后的 15 秒钟内,Liveness Probe 将不会运行,以便容器内的应用程序有时间启动并准备好响应请求。

Readiness Probe

Readiness Probe 用于检查容器是否准备好接收流量。如果容器内的应用程序需要一些时间来启动并准备好响应请求,那么可以使用 Readiness Probe 来防止容器接收流量。如果容器没有准备好接收流量,Kubernetes 将会从 Service 的 Endpoints 中移除该容器。Readiness Probe 的配置如下:

上面的配置指定了一个 HTTP GET 请求,检查路径为 /healthz,端口为 8080。如果容器内的应用程序无法响应该请求,Readiness Probe 将会在每 10 秒钟运行一次,直到连续失败 3 次为止。在容器启动后的 5 秒钟内,Readiness Probe 将不会运行,以便容器内的应用程序有时间启动并准备好响应请求。

Startup Probe

Startup Probe 用于检查容器内的应用程序是否已经启动并准备好接收流量。与 Liveness Probe 和 Readiness Probe 不同,Startup Probe 只会在容器启动时运行一次。如果 Startup Probe 失败,Kubernetes 将会重启容器。Startup Probe 的配置如下:

上面的配置指定了一个 HTTP GET 请求,检查路径为 /healthz,端口为 8080。如果容器内的应用程序无法响应该请求,Kubernetes 将会重启容器。在容器启动后的 5 秒钟内,Startup Probe 将会运行一次。

最佳实践

以下是使用健康检查的最佳实践:

  1. 使用 Liveness Probe 和 Readiness Probe 来确保容器内的应用程序正常运行,并且准备好接收流量。

  2. 使用 Startup Probe 来确保容器内的应用程序已经启动并准备好接收流量。

  3. 配置合适的 initialDelaySeconds,以确保容器内的应用程序有足够的时间启动并准备好响应请求。

  4. 配置合适的 periodSeconds 和 failureThreshold,以确保容器内的应用程序可以在一定时间内响应请求。

  5. 使用正确的探测方式,如 HTTP、TCP 或命令行。

示例代码

以下是一个使用 Liveness Probe 和 Readiness Probe 的示例 Deployment 配置:

在上面的示例中,我们定义了一个 Deployment,包含 3 个副本。容器内的应用程序将会在端口 8080 上监听 HTTP 请求,并在路径为 /healthz 的请求上响应 200 状态码。Liveness Probe 和 Readiness Probe 都将会使用 HTTP GET 请求检查路径为 /healthz,端口为 8080。在容器启动后的 15 秒钟内,Liveness Probe 将不会运行,在容器启动后的 5 秒钟内,Readiness Probe 将不会运行。如果容器内的应用程序无法响应该请求,Liveness Probe 或 Readiness Probe 将会在每 10 秒钟运行一次,直到连续失败 3 次为止。如果容器无法响应 Liveness Probe 或 Readiness Probe,Kubernetes 将会重启容器。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d4ed7da941bf713492befd