Pod 中如何配置 Readiness Probe?

推荐答案

在 Kubernetes 中,可以通过在 Pod 的 YAML 配置文件中定义 readinessProbe 来配置 Readiness Probe。以下是一个示例配置:

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

在这个示例中,readinessProbe 配置了一个 HTTP GET 请求,用于检查容器的 /healthz 路径,端口为 8080initialDelaySeconds 设置为 5 秒,表示容器启动后 5 秒开始执行探针检查。periodSeconds 设置为 10 秒,表示每 10 秒执行一次探针检查。

本题详细解读

1. Readiness Probe 的作用

Readiness Probe 用于确定容器是否已经准备好接收流量。如果 Readiness Probe 检查失败,Kubernetes 会将该 Pod 从 Service 的负载均衡池中移除,直到探针检查成功为止。

2. Readiness Probe 的类型

Kubernetes 支持三种类型的 Readiness Probe:

  • HTTP GET:向容器发送 HTTP GET 请求,根据响应状态码判断容器是否就绪。
  • TCP Socket:尝试与容器的指定端口建立 TCP 连接,如果连接成功则认为容器就绪。
  • Exec:在容器内执行指定的命令,如果命令返回值为 0 则认为容器就绪。

3. 配置参数详解

  • httpGet:用于配置 HTTP GET 类型的探针,包含 pathport 两个必填字段。
  • tcpSocket:用于配置 TCP Socket 类型的探针,包含 port 字段。
  • exec:用于配置 Exec 类型的探针,包含 command 字段。
  • initialDelaySeconds:容器启动后,等待多少秒开始执行探针检查。
  • periodSeconds:探针检查的执行间隔时间。
  • timeoutSeconds:探针检查的超时时间。
  • successThreshold:探针检查成功的最小连续成功次数。
  • failureThreshold:探针检查失败的最小连续失败次数。

4. 示例配置

以下是一个使用 TCP Socket 类型的 Readiness Probe 示例:

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

在这个示例中,readinessProbe 配置了一个 TCP Socket 检查,用于检查容器的 8080 端口是否打开。

纠错
反馈