"Liveness Probe Failed" 错误原因

357 阅读1分钟

Kubernetes 的 liveness probe (存活探针) 检查失败。具体分析如下:

错误详情

Liveness probe failed: Get "http://xxxx/health": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

主要原因

这个错误说明 Kubernetes 尝试访问 Pod 的健康检查端点,但请求超时了。可能的原因包括:

  1. 应用程序没有响应 - 应用可能已经挂起、死锁或过载
  2. 健康检查端点未实现 - 应用没有正确实现 /health 端点
  3. 超时设置过短 - liveness probe 的超时设置可能过短,应用来不及响应
  4. 网络问题 - Pod 内部网络问题导致无法访问健康检查端点
  5. 应用资源不足 - CPU 或内存不足,导致应用响应缓慢

解决建议

  1. 确认网络情况(源端到目的端网络是否正常)

  2. 检查应用日志 - 查看应用日志了解为什么健康检查端点没有响应

  3. 验证健康检查端点 - 确认应用确实实现了 /health 端点并能正常响应

  4. 调整 probe 参数:

    livenessProbe:
      httpGet:
        path: /health
        port: 8888
      initialDelaySeconds: 30  # 增加初始延迟
      timeoutSeconds: 5        # 增加超时时间
      periodSeconds: 10        # 调整检查频率
    
  5. 检查应用资源使用情况 - 确认应用没有资源瓶颈