常见事故模式
发布时最容易看到这几类问题:
- Pod 刚启动就被打流量,依赖还没就绪
- 应用短暂卡顿被 liveness 误杀
- Pod 被删时连接直接断开,导致错误尖峰
三类探针分工
- startupProbe:启动阶段保护期
- readinessProbe:是否可以接收流量
- livenessProbe:进程是否需要重启
不要用 liveness 去做复杂业务检查,它更适合检测“进程是否活着”。
终止流程要完整
示例配置:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: api
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 8"]
应用内部还需要做到:
- 收到 SIGTERM 后停止接收新请求
- 等待在途请求结束
- 关闭连接池与后台任务
一个经验值
如果入口网关或 Service Mesh 更新端点需要几秒,preStop 这几秒很关键。它给控制面收敛时间,避免流量打到即将退出的 Pod。
结语
高可用不是靠单个参数,而是探针策略和退出流程共同生效。发布稳定性通常是这些细节堆出来的。