ydswin

忘记背后,努力面前的,向着标杆直跑

导航

pod探针的三种类型及四种检测方式

在 Kubernetes 中,Pod 探针(Probe) 用于检测容器的健康状态和可用性。探针可以帮助 Kubernetes 决定何时重启容器、何时将流量路由到 Pod,以及何时将 Pod 标记为未就绪状态。探针分为三种类型,每种类型支持四种检测方式。以下是详细介绍:


1. Pod 探针的三种类型

1.1 Liveness Probe(存活探针)

  • 作用:检测容器是否处于运行状态。如果探针失败,Kubernetes 会重启容器。
  • 适用场景:用于检测容器是否“死锁”或进入不可恢复的状态。

1.2 Readiness Probe(就绪探针)

  • 作用:检测容器是否准备好接收流量。如果探针失败,Kubernetes 会将 Pod 从 Service 的 Endpoints 中移除,停止将流量路由到该 Pod。
  • 适用场景:用于检测容器是否已完成初始化或是否能够处理请求。

1.3 Startup Probe(启动探针)

  • 作用:检测容器是否启动完成。如果探针失败,Kubernetes 会认为容器仍在启动中,不会触发 Liveness 或 Readiness 探针。
  • 适用场景:用于检测启动时间较长的容器,避免在启动过程中被误杀。

2. 探针的四种检测方式

每种探针类型都可以通过以下四种方式之一来检测容器的状态:

2.1 Exec(执行命令)

  • 原理:在容器内执行指定的命令,如果命令返回值为 0,则认为检测成功。
  • 适用场景:适用于需要通过自定义脚本或命令检测容器状态的场景。

示例配置

livenessProbe:
  exec:
    command:
      - cat
      - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 10

2.2 HTTP GET(HTTP 请求)

  • 原理:向容器内指定的 HTTP 路径发送 GET 请求,如果返回状态码在 200 到 399 之间,则认为检测成功。
  • 适用场景:适用于通过 HTTP 接口检测容器状态的场景。

示例配置

readinessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 5

2.3 TCP Socket(TCP 连接)

  • 原理:尝试与容器内指定的 TCP 端口建立连接,如果连接成功,则认为检测成功。
  • 适用场景:适用于通过 TCP 端口检测容器状态的场景。

示例配置

livenessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 15
  periodSeconds: 20

2.4 gRPC(gRPC 健康检查)

  • 原理:向容器内指定的 gRPC 服务发送健康检查请求,如果服务返回健康状态,则认为检测成功。
  • 适用场景:适用于使用 gRPC 协议的容器。

示例配置

startupProbe:
  grpc:
    port: 50051
  initialDelaySeconds: 10
  periodSeconds: 5

3. 探针的通用参数

无论使用哪种检测方式,探针都支持以下通用参数:

  • initialDelaySeconds:容器启动后,探针开始检测前的延迟时间(单位:秒)。
  • periodSeconds:探针检测的间隔时间(单位:秒)。
  • timeoutSeconds:探针检测的超时时间(单位:秒)。
  • successThreshold:探针检测连续成功的次数,达到该次数后认为检测成功。
  • failureThreshold:探针检测连续失败的次数,达到该次数后认为检测失败。

4. 示例配置

以下是一个完整的 Pod 配置示例,包含三种探针类型和四种检测方式:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-container
    image: my-image
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    readinessProbe:
      exec:
        command:
          - cat
          - /tmp/ready
      initialDelaySeconds: 3
      periodSeconds: 5
    startupProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 5

5. 总结

  • 三种探针类型

    • Liveness Probe:检测容器是否存活。
    • Readiness Probe:检测容器是否就绪。
    • Startup Probe:检测容器是否启动完成。
  • 四种检测方式

    • Exec:执行命令。
    • HTTP GET:发送 HTTP 请求。
    • TCP Socket:建立 TCP 连接。
    • gRPC:发送 gRPC 健康检查请求。

通过合理配置探针,可以确保 Kubernetes 集群中的容器始终保持健康状态,并能够正确处理流量。根据实际需求选择合适的探针类型和检测方式,可以有效提升应用的稳定性和可靠性!

posted on 2024-02-28 22:38  dashery  阅读(762)  评论(0)    收藏  举报