每個守護程序內建的三種機制,從設計上確保滾動升級的安全。當關閉開始時,<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>。