随笔 - 308  文章 - 0  评论 - 5  阅读 - 4294

Pod 的健康检查方式

在 Kubernetes 中,Pod 的健康检查主要通过 三种探针(Probes) 实现,它们共同确保容器在生命周期不同阶段的健康状态。以下是详细说明:


一、核心健康检查探针

1. Liveness Probe(存活探针)

  • 作用:检测容器是否处于 运行状态。若失败,kubelet 会 重启容器
  • 适用场景:处理死锁、长时间阻塞等导致容器无法正常工作的场景。
  • 检查方式
    • ExecAction:在容器内执行命令,以退出码 0 为成功。
    livenessProbe:
      exec:
        command: ["sh", "-c", "check-alive-script.sh"]
    
    • HTTPGetAction:向容器 IP 发送 HTTP GET 请求,状态码 2xx/3xx 为成功。
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
    
    • TCPSocketAction:尝试连接容器的 TCP 端口,连接成功即健康。
    livenessProbe:
      tcpSocket:
        port: 3306
    

2. Readiness Probe(就绪探针)

  • 作用:检测容器是否 准备好接收流量。若失败,Pod 会从 Service 的 Endpoints 中移除。
  • 适用场景:应用启动依赖初始化(如加载大数据、连接外部服务),避免过早接收请求。
  • 配置方式:与 Liveness Probe 相同(支持 Exec、HTTP、TCP),但语义不同。
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5  # 容器启动后等待 5 秒开始探测
  periodSeconds: 10       # 每 10 秒探测一次

3. Startup Probe(启动探针)

  • 作用:检测 长时间启动的应用 是否完成初始化。成功后,其他探针才会生效。
  • 适用场景:Java 应用、旧系统等启动缓慢的服务,避免被 Liveness Probe 误杀。
startupProbe:
  httpGet:
    path: /init-status
    port: 8080
  failureThreshold: 30  # 允许最多 30 次失败(30*10s=5分钟)
  periodSeconds: 10

二、关键配置参数

所有探针共享以下参数(合理配置避免误判):

  • initialDelaySeconds:容器启动后等待多久开始探测(避免立即检查)。
  • periodSeconds:探测间隔时间(默认 10 秒)。
  • timeoutSeconds:探测超时时间(默认 1 秒)。
  • successThreshold:连续成功次数视为成功(默认 1 次)。
  • failureThreshold:连续失败次数视为最终失败(默认 3 次)。

三、使用建议

  1. Liveness 与 Readiness 分离

    • Liveness 用于恢复不可用容器,检查条件应宽松(避免频繁重启)。
    • Readiness 用于流量控制,检查条件需严格(如依赖服务是否就绪)。
  2. Startup Probe 的优先级

    • 在启动阶段,只有 Startup Probe 生效,其他探针暂停,直到它成功。
  3. 避免过度检查

    • 高频探测(如 periodSeconds: 1)可能增加应用负载。
    • HTTP 路径 /healthz 应轻量,避免复杂逻辑。

四、示例场景

场景 1:Web 服务健康检查

containers:
- name: web
  livenessProbe:
    httpGet:
      path: /health
      port: 80
    initialDelaySeconds: 10
  readinessProbe:
    httpGet:
      path: /ready
      port: 80
    initialDelaySeconds: 5

场景 2:数据库启动检查

startupProbe:
  tcpSocket:
    port: 3306
  failureThreshold: 15
  periodSeconds: 10
# 允许最多 15*10=150 秒完成启动

五、排查工具

  • 查看探针状态
    kubectl describe pod <pod-name>  # 查看 Events 中的 Probe 错误
    
  • 日志分析
    • 检查容器日志,确认应用是否因健康检查失败被重启。

通过合理配置探针,可以显著提升 Kubernetes 应用的可靠性和自愈能力。

posted on   Leo-Yide  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 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 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示