Kubernetes探针概述

Kubernetes提供了三种探针机制来监控容器健康状态:

  • Liveness Probe:检测容器是否处于运行状态,失败时重启容器
  • Readiness Probe:检测容器是否准备好接收流量,失败时从Service端点移除
  • Startup Probe:保护慢启动容器,在启动完成前禁用其他探针检查

代理服务探针配置示例

以下是为代理服务(如Nginx、Envoy等)配置探针的YAML示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: proxy-service
spec:
  template:
    spec:
      containers:
      - name: proxy
        image: nginx:latest
        ports:
        - containerPort: 80
        livenessProbe:
          httpGet:
            path: /healthz
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5

高级健康检查策略

阈值调整优化

  • 生产环境建议设置failureThreshold: 3(默认值)
  • 关键服务可降低periodSeconds至3秒
  • 避免将timeoutSeconds设置低于1秒

混合检查方式

readinessProbe:
  exec:
    command:
    - /bin/sh
    - -c
    - curl -s http://localhost/metrics | grep "healthy"
  timeoutSeconds: 2

基于指标的动态探针

结合Prometheus指标实现动态健康检查:

  1. 暴露/metrics端点
  2. 创建Rules监控关键指标(如错误率)
  3. 通过Sidecar容器转换指标为HTTP状态
annotations:
  prometheus.io/scrape: "true"
  prometheus.io/path: "/metrics"

常见问题排查

探针失败诊断步骤

  • 检查容器日志kubectl logs <pod>
  • 手动执行探针命令kubectl exec <pod> -- <probe-command>
  • 查看事件kubectl describe pod <pod>

性能考虑因素

  • 高频探针检查会增加集群负载
  • TCP套接字检查比HTTP检查开销低30-40%
  • 避免在探针检查中执行复杂业务逻辑

安全加固建议

  • 为健康检查端点配置独立端口
  • 实施网络策略限制探针访问源
  • 敏感检查端点应启用TLS加密
  • 使用ServiceAccount最小权限原则

通过合理配置探针参数和结合监控指标,可以显著提升代理服务的可靠性和自动恢复能力。建议根据实际业务场景进行压力测试,以确定最优探针配置。

更多推荐