本文說明使用中樞叢集作為 Azure Kubernetes Fleet Manager 控制平面的 Kubernetes 資源管理概念。
概觀
跨多個叢集管理 Kubernetes 資源,對於平臺管理員和應用程式開發人員而言,都面臨重大挑戰。 當組織將其 Kubernetes 基礎結構調整為超越單一叢集時,通常會遇到與資源散發、一致性維護及手動管理額外負荷相關的複雜度。 隨著機隊規模的增長,傳統方法的獨立管理每個集群會導致作業孤島,這些孤島越來越難以維護。
多叢集管理挑戰
從幾個叢集轉換為多叢集 Kubernetes 基礎結構,引進了超越傳統容器協調流程的新作業挑戰類別。 這些挑戰會以不同的方式向組織內的各種項目關係人群組顯示,每個群組都有不同的需求和限制。
平臺管理員 通常需要基於各種原因將 Kubernetes 資源部署到多個叢集,例如:
- 執行基礎結構應用程式:監視解決方案(Prometheus、Grafana)、持續部署工具(Flux、ArgoCD)、網路原則、安全性掃描器和記錄匯總工具等重要系統元件必須一致地部署在所有叢集上,才能維持作業可見性和合規性。
- 資源優化:組織想要更妥善地利用具有不同特性的叢集,包括不同的成本配置檔(現成實例與隨選)、特製化硬體功能(已啟用 GPU 的節點、高記憶體實例),以及效能層級,以根據需求和預算限制來優化工作負載放置。
- 合規性與治理:法規架構會要求特定的數據落地需求、安全性控制,以及需要謹慎選取叢集和資源放置策略的稽核功能。
同樣地, 應用程式開發人員 通常需要基於各種原因將 Kubernetes 資源部署到多個叢集,例如:
- 地理分佈:新式應用程式通常會偏好接近使用者,以將延遲降到最低、符合數據主權需求,並提供最佳的用戶體驗。 鄰近性喜好設定需要跨多個地理區域部署應用程式元件,同時維持一致性與協調。
- 高可用性:業務關鍵性應用程式必須在區域性中斷、基礎結構失敗或計劃性維護期間維護服務可用性。 具有自動化故障轉移功能的跨區域部署可確保商務持續性,並符合嚴格的服務等級協定 (SLA) 需求。
當組織嘗試擴展至多於少量叢集時,手動多重叢集管理的複雜性就變得非常明顯。 在基礎結構成長時,適用於小型叢集機隊的手動程式會迅速成為瓶頸。
手動多重叢集管理挑戰
- 作業複雜度:跨多個叢集個別建立、更新及追蹤資源的系統管理負擔會隨著機隊大小以指數方式成長。 每個叢集都需要個別的驗證、內容切換和手動驗證,進而增加時間投入,並增加人為錯誤的可能性。
- 設定漂移:沒有集中式控制機制,手動程式不可避免地會導致叢集在一段時間內不一致。 這些不一致可以顯示為不同的資源版本、不同的組態或遺失的元件,以建立無法預測的行為和偵錯挑戰。
- 延展性限制:當組織擴增至數十甚至數百個叢集時,適用於小規模的手動流程將變得愈加不切實際。 管理額外負荷的線性增加最終超過可用的系統管理容量。
- 缺乏可見度:跨多個叢集全面追蹤資源版本、資源健康情況和作業計量需要大量協調和自定義工具。 如果沒有集中的監控,小組將面臨困難維持情境感知,並有效地響應問題。
多叢集資源管理的整體架構
Azure Kubernetes Fleet Manager 可透過以 開放原始碼雲端原生專案 和 Kubernetes 原生 API 為基礎的全方位平臺,解決多叢集資源管理的基本挑戰。 此解決方案會利用自定義資源定義 (CRD) 的功能和彈性,將 Kubernetes 的宣告式模型延伸至多叢集案例。 此方法會維護熟悉的 Kubernetes 作業模型,同時擴充其功能來處理機隊規模作業。 以下是解決方案的一些主要原則和優點:
中樞與輪輻控制平面
中樞和輪輻架構會將集中式中樞叢集指定為控制平面,而不需要獨立管理每個叢集。 此架構模式提供:
- 集中式管理:全車隊作業的單一控制點,可降低系統管理負荷。
- 一致的 API 體驗:在整個基礎結構之間統一互動,確保易於使用。
- 增強可檢視性:集中式監視和管理功能,以提升情況感知能力,並加快問題解決速度。
Kubernetes 原生擴充模型
解決方案建置在 CNCF專案上,透過自定義資源定義 (CRD) 擴充 Kubernetes 的宣告式模型,而不是取代它。 這可確保:
- 熟悉度:Kubernetes 從業者可以利用現有的知識和工具。
- 相容性:與現有的 Kubernetes 工作流程和工具緊密整合。
- Cloud-Native 一致性:遵循雲端原生原則並與CNCF生態系統相容。
進階排程和推出策略
此解決方案包含進階排程機制和漸進式推出方法與策略,使能:
- 宣告式放置原則:根據叢集特性放置工作負載,例如成本、資源可用性和地理位置。
- 漸進式推出:使用安全機制來控制更新的部署,以將風險降到最低。
- 漂移管理:確保跨叢集的資源版本和設定一致,減少作業不一致的情況。
主要優點
藉由採用 Azure Kubernetes Fleet Manager,組織可以達成:
- 延展性:有效率地管理任何大小的車隊,從幾個叢集到數百個。
- 作業效率:透過自動化和集中式控制來減少手動工作和人為錯誤。
- 復原:透過智慧型資源放置和故障轉移策略,確保高可用性和災害復原。
下圖顯示如何使用 Azure Kubernetes Fleet Manager API 來管理多叢集工作負載的 YAML 檔案範例。