確保工作負載可在中斷期間運作


在 Google Kubernetes Engine (GKE) 叢集中執行的應用程式必須做好準備,以因應節點升級和其他維護事件等中斷情況。有狀態的應用程式通常需要時間才能停止 I/O 並從儲存空間卸載,因此特別容易受到中斷影響。您可以運用 Kubernetes 功能 (例如 Pod 中斷預算 (PDB) 和就緒探查,確保應用程式在升級期間仍可正常運作。

GKE 會監控叢集,並使用建議事項服務提供指引,協助您最佳化平台用量。GKE 會偵測工作負載是否可能中斷,並提供相關指引,說明如何更新 PDB 或就緒探查,盡量避免工作負載中斷。舉例來說,如果 StatefulSet 未受 PDB 保護,叢集可能會在節點升級期間一次移除所有 Pod。為避免這種情況,GKE 會提供建立 PDB 的指引,讓大多數 Pod 在升級期間都能保持運作。

如要瞭解 GKE 提供中斷相關指引的具體情況,請參閱「GKE 偵測到工作負載容易中斷時」一節。

如要進一步瞭解如何管理 Recommenders 的深入分析和建議,請參閱「運用深入分析和建議,最佳化 GKE 使用情形」。

找出容易中斷的工作負載

GKE 會產生洞察資訊,找出叢集中容易中斷的工作負載。如要取得這些深入分析結果,請按照查看深入分析和建議的操作說明,使用 Google Cloud CLI 或 Recommender API。使用下列章節列出的子類型,篩選特定洞察資料。 Google Cloud 控制台不會顯示這些洞察資料。

當 GKE 偵測到工作負載容易中斷時

請參閱下表,瞭解 GKE 提供洞察資訊和建議的情境,以及相關子類型:

洞察子類型 說明 動作
PDB_UNPROTECTED_STATEFULSET 如果現有 PDB 標籤與 StatefulSet 的 Pod 選取器標籤不符,系統就會發出快訊。這表示在節點升級等事件期間,StatefulSet 中的所有 Pod 都可能停止運作。 新增 PDB,並確保其標籤與 StatefulSet Pod 選取器欄位中的標籤相符。在該 PDB 中指定 StatefulSet 可容忍的服務中斷程度。與這項深入分析資料相關的建議會指出 PDB 應設定哪些標籤,才能涵蓋提及的 StatefulSet。
PDB_UNPERMISSIVE 如果任何維護活動 (例如節點升級) 無法遵守與 Pod 相符的 PDB,系統就會發出快訊。PDB 至少須允許中斷一個 Pod,因此一小時後,GKE 會違反這項 PDB,執行必要的維護作業。 將 PDB 的 minAvailable 設定調整為小於 Pod 總數,或將 maxUnavailable 設定調整為大於零。
PDB_STATEFULSET_WITHOUT_PROBES 如果 StatefulSet 已設定 PDB,但未設定 readiness 探測,PDB 在評估應用程式 readiness 方面的效能較低,系統就會發出快訊。PDB 在查看哪些 Pod 算是健康狀態良好時,會沿用 readiness 探測。因此,如果 PDB 涵蓋的 Pod 未設定完備性探測,PDB 就無法確定 Pod 是否健康狀態良好,而非只是開始運作。 為洞察資訊中提及的 PDB,在 StatefulSet 的 Pod 中新增完備性探測。我們也建議您新增存活探查
DEPLOYMENT_MISSING_PDB 當 Deployment 的 Pod 選取器與現有 PDB 不相符 Deployment 有多個副本啟用水平 Pod 自動調度資源時,系統會發出快訊。這表示在節點升級等事件期間,Deployment 中的所有 Pod 可能會停止運作。 新增 PDB,並確保其標籤與 Deployment Pod 選取器欄位中的標籤相符。在該 PDB 中,指定 Deployment 可容許的服務中斷程度。與這項洞察資料相關的建議會指出 PDB 應設定哪些標籤,以涵蓋上述部署作業。

按照指南操作,提升應對中斷狀況的能力

如果您已收到叢集中工作負載的洞察資料和建議,且想提升工作負載的服務中斷準備程度,請按照建議和洞察子類型動作中的說明操作,如上一節所示。

系統每天會評估建議一次,因此實作變更後,建議最多可能需要 24 小時才會解決。

如果不想採用建議,可以關閉建議

後續步驟

  • 如要進一步瞭解如何確保 GKE 叢集的可靠性和正常運作時間,請參閱 GKE Day 2 Operations Best Practices
  • 如要進一步瞭解 Kubernetes 中 Pod 可能發生的中斷情形,請參閱中斷