高可用性的 Kubernetes 工作負載

本文建議採用 Kubernetes 容器工作負載策略,在 Google Distributed Cloud (GDC) 實體隔離多區域環境中,提高應用程式的容錯能力。GDC 支援 Kubernetes 原生容器應用程式,這些應用程式廣為使用,且 Google Kubernetes Engine (GKE) 也支援。

本文策略適用於負責建立彈性工作負載的應用程式開發人員。

詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

高可用性應用程式的 Kubernetes 注意事項

在 Kubernetes 中實現高可用性 (HA) 不僅限於控制層。您也必須在 Google Distributed Cloud (GDC) 實體隔離環境中,設計及部署容器工作負載,確保系統具備復原能力。Kubernetes 提供多種強大機制,可將停機時間降至最低,即使遇到基礎架構問題或進行例行維護,也能提供高可用性服務。以下是高可用性方面的重要策略:

  • 透過副本和自動調度資源功能維持可用性:確保應用程式有足夠的執行中執行個體,可處理延遲需求,並在個別 Pod 發生故障時繼續運作。

    • Pod 副本:維持一組穩定的相同 Pod 副本。如果 Pod 發生故障,ReplicaSet 控制器會自動建立新的 Pod 來取代。詳情請參閱 Kubernetes ReplicaSet 說明文件

    • 水平 Pod 自動調度資源 (HPA):根據 CPU 使用率等指標自動調整副本數量,讓應用程式處理流量尖峰。詳情請參閱 Kubernetes HPA 說明文件

  • 使用 PodDisruptionBudget (PDB) 將停機時間降到最低:使用 PDB 限制自願性中斷期間 (例如節點維護) 可同時停機的 Pod 數量。這項策略可確保最低可用性。詳情請參閱 Kubernetes PDB 說明文件

  • 使用反相依性規則分散風險:使用 Pod 反相依性,確保相同應用程式的多個副本不會排定在同一節點上。這項策略可避免單一基礎架構故障導致所有副本停止運作。詳情請參閱 Kubernetes 親和性說明文件

  • 使用探測器進行健康狀態檢查:實作 liveness、readiness 和 startup 探測器,協助 Kubernetes 偵測健康狀態不良的 Pod 並從中復原。探測器可確保流量只傳送至能夠處理流量的 Pod。詳情請參閱 Kubernetes 探測說明文件

  • 透過服務提供穩定的端點:使用 Kubernetes Service 物件為 Pod 提供穩定的 IP 位址和 DNS 名稱,將用戶端與個別 Pod 生命週期分離,並提供內部負載平衡。詳情請參閱 Kubernetes 服務說明文件

  • 透過部署作業進行順暢的更新和復原:使用 Kubernetes Deployment 物件,為容器工作負載提供順暢的更新和復原功能。詳情請參閱 Kubernetes Deployment 說明文件

  • 設定資源要求和限制:定義容器所需的 CPU 和記憶體資源。Kubernetes 排程器可根據這些規格有效放置 Pod,避免資源爭用影響可用性。詳情請參閱 Kubernetes 資源管理說明文件

後續步驟