每个守护进程内置的三种机制使滚动升级从设计上安全。<code>/readyz</code> 探针在关闭开始时立即返回 <code>503</code>,使负载均衡器或网关看到节点退出轮询,而 <code>/livez</code> 保持 <code>200</code>,确保进程不会被强制终止 <a href="#ref-1">[1]</a>. 可配置的排空保持时间使节点在排空状态中停留足够长的时间,以便调度器停止发送新任务,然后进程才停止接受新请求。网关探测的是 <code>/readyz</code>,不仅仅是存活状态,其每请求故障切换覆盖了少数与排空窗口竞速的请求 <a href="#ref-1">[1]</a>.

排空而非丢弃

当工作节点收到停止信号时,它进入排空状态:<code>/readyz</code> 返回 <code>503</code>,正在处理的请求完成后,进程才退出 <a href="#ref-2">[2]</a>. 排空时长由 <code>AISUITE_DRAIN_SECONDS</code> 设置,另有独立的关闭预算限制进程等待正在处理任务完成的时间。池条目保持不变;相同地址在新版本上恢复健康,网关继续路由到该地址。

网关完成剩余工作

在集群中,您一次停止一个工作节点。网关仪表盘显示该节点状态变为排空,然后变为不可用,而流量继续在其他节点上运行;您替换镜像后,该节点在新版本上恢复健康,然后再切换到下一个节点 <a href="#ref-1">[1]</a>. 在此过程中网关配置未发生任何更改。流量切换由健康探测驱动,而非配置编辑。

Kubernetes:天生零停机

在 Kubernetes 上,相同的探针使得 <code>kubectl rollout</code> 在无需额外工具的情况下安全:在 <code>/livez</code> 上设置存活探针,在 <code>/readyz</code> 上设置就绪探针,并将 <code>terminationGracePeriodSeconds</code> 设置为排空加关闭预算的时间或更长 <a href="#ref-2">[2]</a>调度器停止将流量路由到正在排空的 Pod,等待宽限期结束,然后滚动更新下一个 Pod。

重要性

“更新星期二”不应存在于其他应用依赖的 AI 端点上。这也是证明网关集群端到端可用性的机制:补丁更新不是停机,并且在负载下依然有效,而不仅仅是在空闲控制台上 <a href="#ref-1">[1]</a><a href="#ref-3">[3]</a>