作者信息: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 @   黄嘉波  阅读(35)  评论(0编辑  收藏  举报
努力加载评论中...
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示