1. 为什么K8s健康检查如此重要
在分布式系统中,单个容器实例的健康状态往往难以直观判断。传统运维方式通常依赖人工检查日志或端口连通性,这种方式在容器化环境中存在明显滞后性。Kubernetes通过健康检查探针(Probe)机制实现了自动化故障检测,这是保障服务稳定性的第一道防线。
去年我们线上环境曾发生过典型事故:某个微服务进程虽然仍在运行,但内部线程池已完全阻塞,导致请求堆积。由于没有配置健康检查,Kubernetes始终认为该Pod健康,流量持续导入,最终引发雪崩效应。这个案例让我深刻认识到,合理的探针配置不是可选项,而是容器化部署的基本要求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 探针类型深度解析
2.1 存活探针(Liveness Probe)
这是最基础的生存检查,相当于给容器安装的"心脏监护仪"。当探针连续失败时,kubelet会按照重启策略(restartPolicy)重建容器。关键配置参数包括:
yaml复制livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30 # 容器启动后等待时间
periodSeconds: 5 # 检查间隔
timeoutSeconds: 1 # 超时时间
failureThreshold: 3 # 连续失败次数
经验之谈:initialDelaySeconds需要根据应用实际启动时间调整。我们曾因设置过短导致探针在Spring Boot未完成初始化时就判定失败,引发频繁重启。
2.2 就绪探针(Readiness Probe)
控制服务是否接入流量,相当于"流量开关"。与存活探针不同,就绪探针失败时不会重启容器,而是从Service的Endpoint中移除该Pod。典型配置:
yaml复制readinessProbe:
exec:
command:
- /bin/sh
- -c
- curl -s http://localhost:8080/ready | grep OK
successThreshold: 1
2.3 启动探针(Startup Probe)
这是
