在 Kubernetes 中添加健康检查来确保应用正常运行

阅读时长 5 分钟读完

Kubernetes 是一个开源的容器编排系统,它能够管理和自动化容器的部署、调度、扩展和运维。在 Kubernetes 上运行的应用可以是前端应用、后端应用,甚至是复杂的分布式系统。在这篇文章中,我们将讨论如何在 Kubernetes 中添加健康检查来确保应用的正常运行。

健康检查的意义

健康检查是一种监控和保护机制,它能够检测应用在特定条件下的状态和表现。在 Kubernetes 中,它特别适用于检测容器的运行状态并根据实际情况对容器进行自愈。例如,当一个容器在大量访问量下崩溃时, Kubernetes 可以自动重启该容器并将其重新加入到负载均衡器中。

在实际使用中,健康检查通常分为两种类型:

  1. 存活探针(Liveness Probe):用于检测容器是否仍在运行,如果容器未通过存活探针检测,则 Kubernetes 将其重启或删除。
  2. 就绪探针(Readiness Probe):用于检测容器是否准备好接收流量,如果容器未通过就绪探针检测,则 Kubernetes 将不会将其加入到服务端点列表中。

添加健康检查

在 Kubernetes 中,我们可以通过添加 YAML 文件的方式来定义存活探针和就绪探针。以下是一份示例 YAML 文件:

-- -------------------- ---- -------
----------- --
----- ---
---------
  ----- -----
-----
  -----------
  - ----- ---------------
    ------ -----------
    ------
    - -------------- ----
    --------------
      --------
        ----- -------
        ----- ----
      -------------------- --
      --------------- -
      -------------- --
      ----------------- -
      ----------------- -
    ---------------
      --------
        ----- ------
        ----- ----
      -------------------- --
      --------------- -
      -------------- -
      ----------------- -
      ----------------- -

在该示例中,我们定义了一个名为 myapp 的 Pod,并在其中定义了一个名为 myapp-container 的容器。在该容器中,我们通过 ports 属性将容器的 8080 端口暴露出来,并使用 livenessProbereadinessProbe 两个属性来定义存活探针和就绪探针。

存活探针

存活探针是用于检测容器是否仍在运行的探针。在示例 YAML 文件中,我们通过 httpGet 属性来定义存活探针的检测方式。其中,path 属性指定了探针发送 GET 请求时要访问的 URL,这里我们使用 /healthport 属性指定了要访问的端口号,这里我们使用 8080。initialDelaySeconds 属性指定了探针首次检测的延迟时间,这里设置为 30 秒。timeoutSeconds 属性指定了探针检测时的超时时间,这里设置为 1 秒。periodSeconds 属性指定了探针检测的时间间隔,这里设置为 10 秒。successThreshold 属性指定了探针检测成功的最小阈值,这里设置为 1。failureThreshold 属性指定了探针检测失败的最大阈值,这里设置为 3。

如果容器在 initialDelaySeconds 秒后无法通过 httpGet 接口正常响应,或者在 timeoutSeconds 秒内连续 failureThreshold 次检测失败,则 Kubernetes 认为该容器不可用,并尝试将其重启或删除。

就绪探针

就绪探针是用于检测容器是否准备好接收流量的探针。在示例 YAML 文件中,我们仍然通过 httpGet 属性来定义就绪探针的检测方式。其中,path 属性指定了探针发送 GET 请求时要访问的 URL,这里我们使用 /readyport 属性指定了要访问的端口号,这里我们使用 8080。initialDelaySeconds 属性指定了探针首次检测的延迟时间,这里设置为 10 秒。timeoutSeconds 属性指定了探针检测时的超时时间,这里设置为 1 秒。periodSeconds 属性指定了探针检测的时间间隔,这里设置为 5 秒。successThreshold 属性指定了探针检测成功的最小阈值,这里设置为 1。failureThreshold 属性指定了探针检测失败的最大阈值,这里设置为 3。

如果容器在 initialDelaySeconds 秒后无法通过 httpGet 接口正常响应,或者在 timeoutSeconds 秒内连续 failureThreshold 次检测失败,则 Kubernetes 认为该容器不准备好接收流量。

总结

在 Kubernetes 中添加健康检查是保证应用正常运行的重要手段。通过定义存活探针和就绪探针,我们可以监控容器的运行状态,并在检测到异常时自动重启或删除容器。在实际使用中,我们可以通过 YAML 文件来定义健康检查。本文对于健康检查的介绍代码示例详细,方便读者学习和实践。

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

纠错
反馈