常见事故模式

发布时最容易看到这几类问题:

  • 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。

结语

高可用不是靠单个参数,而是探针策略和退出流程共同生效。发布稳定性通常是这些细节堆出来的。