ydswin

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

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

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   dashery  阅读(466)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略
点击右上角即可分享
微信分享提示