Kubernetes 中的 Liveness 和 Readiness 详解

阅读时长 5 分钟读完

在 Kubernetes 中,Liveness 和 Readiness 都是非常重要的概念。它们可以帮助我们确保应用程序在运行时保持可用状态,并在任何可能的问题情况下进行自愈和自我修复。

Liveness Probe

在 Kubernetes 中,Liveness Probe 用于确定容器是否应该被杀死并重新启动。Liveness Probe 检查容器内的应用程序是否仍在运行,并返回成功或失败的结果。如果 Liveness Probe 返回失败的结果,则 Kubernetes 认为容器不再健康,并重新启动该容器,以便运行有问题的应用程序。

Liveness Probe 可以用几种方式执行:

HTTP Request

HTTP Request Liveness Probe 基于 HTTP 请求检查应用程序是否仍在响应请求。如果应用程序不再响应请求,则 Liveness Probe 返回失败的结果,导致 Kubernetes 重启容器。

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

上面的配置将在容器启动后等待 10 秒开始检查应用程序的 /health 端点。如果在任何 5 秒内,Liveness Probe 请求 /health 端点时不再响应,则 Kubernetes 将重新启动容器。

TCP Socket

TCP Socket Liveness Probe 通过检查应用程序是否响应 TCP 连接来检查应用程序是否仍在运行。如果应用程序不再响应连接,则 Liveness Probe 返回失败的结果,导致 Kubernetes 重启容器。

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

上面的配置将在容器启动后等待 10 秒开始检查应用程序是否仍然响应 TCP 连接。如果在任何 5 秒内,Liveness Probe 请求 TCP 连接时不再响应,则 Kubernetes 将重新启动容器。

Readiness Probe

在 Kubernetes 中,Readiness Probe 用于确定容器是否已准备好接收流量。如果容器没有准备好接收流量,则经过它的所有流量将被广播到其他容器。

Readiness Probe 可以用几种方式执行:

HTTP Request

HTTP Request Readiness Probe 基于 HTTP 请求检查应用程序是否已准备好接收请求。如果应用程序不再准备好接收请求,则 Kubernetes 认为容器不再准备好接收流量,并将经过其的所有流量广播到其他容器。

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

上面的配置将在容器启动后等待 10 秒开始检查应用程序的 /health 端点是否准备好接收请求。如果该端点不再准备好接收请求,则 Kubernetes 认为容器不再准备好接收流量。

TCP Socket

TCP Socket Readiness Probe 通过检查应用程序是否响应 TCP 连接来检查应用程序是否已准备好接收请求。如果应用程序不再准备好接收请求,则 Kubernetes 认为容器不再准备好接收流量,并将经过其的所有流量广播到其他容器。

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

上面的配置将在容器启动后等待 10 秒开始检查应用程序是否已准备好接收 TCP 连接。如果应用程序不再准备好接收请求,则 Kubernetes 认为容器不再准备好接收流量。

总结

Liveness Probe 和 Readiness Probe 可以帮助我们确保应用程序在 Kubernetes 中保持可用状态,并自愈和自我修复。在编写 Kubernetes Pod 配置时,必须考虑这两个因素,并使用适当的 Probe 来确定容器是否健康并是否准备好接收请求。

以上是一个基本的示例,但在实际情况中,这些 Probe 需要根据应用程序的特定要求进行调整。因此,系统管理员应该根据应用程序的需要来自定义 Probe 的设置。

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

纠错
反馈