Kubernetes 探针实战指南

Kubernetes 探针是容器健康检查的重要组件,合理配置和使用探针可以提高应用程序的可靠性。本文将介绍探针的实战指南,涵盖 Liveness Probe、Readiness Probe 的配置和高级应用,同时添加一些扩展和额外参数的说明。

1. Liveness Probe

​Liveness Probe​​​ 用于确定容器是否存活。当 ​​Liveness Probe​​ 失败时,Kubernetes 将重启容器,以确保应用程序的健康状态。

1.1 HTTP Liveness Probe

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 3
  failureThreshold: 3
  • ​initialDelaySeconds​​ 表示在容器启动后等待 3 秒后开始执行首次探测。
  • ​periodSeconds​​ 表示每隔 3 秒进行一次探测。
  • ​failureThreshold​​ 表示在连续 3 次探测失败后,Kubernetes 将重启容器。

​Liveness Probe​​ 的主要作用是确保容器在运行时保持活动状态,当容器处于不健康状态时,Kubernetes 会采取自动的容器重启策略。

1.2 TCP Liveness Probe

livenessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 3

对于 TCP Liveness Probe,同样可以设置 ​​initialDelaySeconds​​​ 和 ​​periodSeconds​​ 参数。

1.3 Exec Liveness Probe

livenessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 3
  periodSeconds: 3

通过 Exec Liveness Probe,执行指定的命令判断容器是否存活。在上述配置中,执行的命令是 ​​cat /tmp/healthy​​。

2. Readiness Probe

​Readiness Probe​​​ 用于确定容器是否准备好接收流量。当 ​​Readiness Probe​​ 失败时,Kubernetes 将停止向容器发送流量。

2.1 HTTP Readiness Probe

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5
  • ​initialDelaySeconds​​ 表示在容器启动后等待 5 秒后开始执行首次探测。
  • ​periodSeconds​​ 表示每隔 5 秒进行一次探测。

2.2 TCP Readiness Probe

readinessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

对于 TCP Readiness Probe,同样可以设置 ​​initialDelaySeconds​​​ 和 ​​periodSeconds​​ 参数。

2.3 Exec Readiness Probe

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/ready
  initialDelaySeconds: 5
  periodSeconds: 5

通过 Exec Readiness Probe,执行指定的命令判断容器是否准备好接收流量。在上述配置中,执行的命令是 ​​cat /tmp/ready​​。

3. 高级应用

3.1 探针超时配置

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  timeoutSeconds: 2
  • ​timeoutSeconds​​ 表示探针在 2 秒内必须完成,否则将视为失败。

3.2 探针失败阈值

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  failureThreshold: 3
  • ​failureThreshold​​ 表示在连续 3 次探测失败后,Kubernetes 将重启容器。

3.3 探针初始延迟随机性

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 3
  failureThreshold: 3
  initialDelaySeconds: 5
  • ​initialDelaySeconds​​ 在 5 秒和 8 秒之间的随机时间内开始首次探测。

4.完整案例

为了更全面地说明探针的作用,下面是一个完整的 YAML 示例,包括 Liveness Probe 和 Readiness Probe 的配置,以及容器的重启策略。此外,我添加了一些验证的注释,以便更好地理解探针的实际效果:

apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
  - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3
      failureThreshold: 3
  restartPolicy: Always

在这个示例中:

  • ​readinessProbe​​ 配置了一个 HTTP 探测器,用于判断容器是否准备好接收流量。该探测器在容器启动后等待 5 秒开始执行,每隔 5 秒进行一次探测。
  • ​livenessProbe​​ 配置了一个 HTTP 探测器,用于判断容器是否存活。该探测器在容器启动后等待 3 秒开始执行,每隔 3 秒进行一次探测,如果连续 3 次探测失败,则 Kubernetes 将重启容器。
  • ​restartPolicy: Always​​ 指定了容器的重启策略,即使容器正常退出,也会自动重启。

请确保你的应用程序在容器内实际提供了 ​​/ready​​​ 和 ​​/healthz​​ 的路径,并且能够响应这些探测请求。这样,Kubernetes 才能通过这些探针来判断容器的状态,并根据需要进行重启或流量调度。

结论

通过合理配置 Liveness Probe 和 Readiness Probe,可以确保容器应用在运行时保持活动状态、可靠接收流量,并在必要时进行重启。根据应用的性能和启动时间,调整探针参数,以达到最佳的应用可维护性和可靠性。在实际应用中,根据具体需求,选择合适的探针类型和配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ivwdcwso

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值