高可用性的 Kubernetes 工作負載

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

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

詳情請參閱「GDC air-gapped 說明文件適用對象」。

高可用性應用程式的 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 和啟動探測,協助 Kubernetes 偵測健康狀態不良的 Pod 並從中復原。探查可確保流量只傳送至能夠處理流量的 Pod。詳情請參閱 Kubernetes 探測說明文件。

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

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

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

後續步驟