作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,Pod的LivenessProbe 探针的常见方式有哪些?

在 Kubernetes 中,Pod 的 Liveness Probe 探针用于确定何时重启容器。以下是 Liveness Probe 的常见方式:

  1. ExecAction

    • 在容器内执行命令。如果命令执行成功(返回码为0),则认为容器健康。否则,kubelet 会杀死并重启容器。

    • 配置示例:

      livenessProbe:
        exec:
          command:
          - cat
          - /tmp/healthy
        initialDelaySeconds: 5
        periodSeconds: 5
      
    • 在这个例子中,kubelet 会每隔 5 秒执行一次 cat /tmp/healthy 命令。如果命令返回失败(文件不存在或命令执行出错),则 kubelet 会重启容器。

  2. HTTPGetAction

    • 向容器的特定端口和路径发送 HTTP GET 请求。如果服务器返回的 HTTP 状态码在 200-399 范围内,则认为容器健康。

    • 配置示例:

      livenessProbe:
        httpGet:
          path: /healthz
          port: 8080
        initialDelaySeconds: 3
        periodSeconds: 3
      
    • 在这个例子中,kubelet 会每隔 3 秒向容器的 8080 端口上的 /healthz 路径发送一个 HTTP GET 请求。如果请求失败(例如,返回 500 错误),则 kubelet 会重启容器。

  3. TCPSocketAction

    • 尝试与容器的指定端口建立 TCP 连接。如果连接成功,则认为容器健康。

    • 配置示例:

      livenessProbe:
        tcpSocket:
          port: 8080
        initialDelaySeconds: 15
        periodSeconds: 10
      
    • 在这个例子中,kubelet 会每隔 10 秒尝试与容器的 8080 端口建立 TCP 连接。如果连接失败,则 kubelet 会重启容器。

  4. gRPC(Kubernetes v1.27 引入):

    • 如果应用实现了 gRPC 健康检查协议,可以使用 gRPC 探针进行存活性检查。

    • 配置示例:

      livenessProbe:
        grpc:
          port: 2379
        initialDelaySeconds: 10
      
    • 在这个例子中,kubelet 会检查 gRPC 服务是否在指定的端口上运行。如果服务未运行,则 kubelet 会重启容器。

综上所述,每种探针都可以配置额外的参数,如 initialDelaySeconds(首次探测前的等待时间)、periodSeconds(探测间隔时间)、timeoutSeconds(探测超时时间)、successThreshold(探测成功的阈值)和 failureThreshold(探测失败的阈值)等,以精确控制探针的行为。

posted @ 2024-10-08 13:38  黄嘉波  阅读(20)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波