在 Kubernetes 中如何使用 Liveness Probe 和 Readiness Probe?

阅读时长 6 分钟读完

前言

Kubernetes 是一个流行的容器编排系统,用于部署和管理容器化应用程序。在 Kubernetes 中,Liveness Probe 和 Readiness Probe 是非常重要的概念。它们可以确保应用程序在运行时正常工作,并帮助 Kubernetes 策略灵活地处理容器故障和网络问题。本文将详细介绍 Liveness Probe 和 Readiness Probe 的概念及功能,并说明如何实现它们。

Liveness Probe 的概念和功能

在 Kubernetes 中,Liveness Probe 用于检查容器是否处于活动状态。如果容器崩溃或发生其他重大错误,它将终止运行,并且 Kubernetes 将重新启动容器。Liveness Probe 可以确保容器正常工作,即使出现不良情况也能保持运行状态。

Liveness Probe 可以使用三种方式进行检查:

  • HTTP 探针:使用 HTTP GET 请求检查容器是否可以响应特定的 URL。
  • TCP 探针:使用 TCP 连接检查容器是否可以连接到指定的端口。
  • 命令探针:执行命令,并检查退出码是否为 0。

以下是 Liveness Probe 的一个示例,使用 HTTP GET 请求检查容器是否正常运行:

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

在这个示例中,当容器启动后,Kubernetes 将每 20 秒执行一次 HTTP GET 请求,检查 /healthcheck 资源是否可用。如果容器不能响应或响应码不是 200,Kubernetes 将终止该容器,并尝试重新启动它。

Readiness Probe 的概念和功能

在 Kubernetes 中,Readiness Probe 用于检查容器是否已准备好接收流量。它可确保容器已经初始化并加载了所需的资源,例如数据库或配置文件。如果容器未准备好接收流量,则它不应该接收流量,并且 Kubernetes 会将其从服务负载均衡器中移除。

Readiness Probe 也可以使用三种方式进行检查:HTTP、TCP 和命令探针。

以下是 Readiness Probe 的一个示例,使用 TCP 检查容器是否准备好接收流量:

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

在这个示例中,当容器启动后,Kubernetes 将每 5 秒执行一次 TCP 连接检查,检查容器是否准备好接收流量。如果容器无法建立 TCP 连接,则 Kubernetes 将从服务负载均衡器中移除该容器。

如何实现 Liveness Probe 和 Readiness Probe

在 Kubernetes 中,可以为 Pod 中的每个容器定义 Liveness Probe 和 Readiness Probe。在容器的描述文件中,使用 livenessProbe 和 readinessProbe 字段来定义探针。

HTTP 探针

对于 HTTP 探针,需要定义要检查的 URL 路径和端口号。以下是一个使用 HTTP 探针的例子:

在上面的示例中,当容器启动后,将检查 /healthz 路径是否可用,并检查端口 8080 是否可以响应。如果容器不能响应,则 Kubernetes 将认为容器不健康,并将重启容器或将其从服务负载均衡器中移除。

TCP 探针

对于 TCP 探针,需要定义用于检查连接的端口号。以下是一个使用 TCP 探针的例子:

在上面的示例中,当容器启动后,将检查端口 8080 是否可以连接。如果容器无法建立 TCP 连接,则 Kubernetes 将认为容器不健康,并将重启容器或将其从服务负载均衡器中移除。

命令探针

对于命令探针,需要定义要执行的命令和检查退出码。以下是一个使用命令探针的例子:

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

上面的示例中,将每 5 秒执行一次 cat 命令,检查 /tmp/health 或 /tmp/ready 文件是否存在。如果文件存在,则返回退出码 0,容器被认为是健康或已准备好接收流量。如果文件不存在或返回退出码不是 0,则 Kubernetes 将认为容器不健康,并将重启容器或将其从服务负载均衡器中移除。

总结

在 Kubernetes 中,Liveness Probe 和 Readiness Probe 是非常重要的概念,可以确保容器正常工作,即使在不良情况下也可以保持运行状态。本文介绍了 Liveness Probe 和 Readiness Probe 的概念、功能和实现方法,希望能帮助读者更好地理解和使用 Kubernetes。

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

纠错
反馈