多叢集 Service


本頁面將概略說明 GKE 多叢集服務 (MCS) 的運作方式。如要瞭解如何使用 MCS,請參閱設定多叢集服務

MCS 總覽

您可以使用 Kubernetes 熟悉的 Service 物件,在單一 Kubernetes 叢集的範圍內探索及存取 Service。不過,有時您可能需要將應用程式分割成多個叢集,以因應狀態管理、隱私權、可擴充性、可用性和資料主權需求。使用 MCS,您可以建構跨多個叢集的 Kubernetes 應用程式。

MCS 是 Google Kubernetes Engine (GKE) 的跨叢集服務探索和叫用機制,可運用現有的 Service 物件。啟用這項功能後,服務就能透過虛擬 IP 在叢集間探索及存取,與叢集內可存取的 ClusterIP 服務行為相符。與現有服務一樣,MCS 也與社群主導的開放式 API 相容,確保工作負載可移植。

MCS 是 GKE 的一項功能,MCS 會為機群叢集中匯出的每個服務設定 Cloud DNS 區域和記錄。機群能有條理地將 GKE 叢集分類並正規化,讓基礎架構管理作業更輕鬆,並啟用 MCS 等多叢集功能。如要進一步瞭解車隊的優點和建立方式,請參閱車隊管理說明文件

無論類型為何,匯出的服務一律會有一筆 Cloud DNS 記錄,而匯出的無頭類型服務則會為每個後端 Pod 建立記錄 (包括 StatefulSets 中的 Pod),並提供主機名稱。使用 Cloud DNS 會產生額外費用。系統會根據 Cloud DNS 定價向您收費。

如要使用 MCS 匯出 Service,請建立 ServiceExport 自訂資源,並使用與 Service 相同的命名空間和名稱。MCS 會自動將服務匯入機群中的每個叢集。MCS 匯入服務時,會建立下列項目:

  • 使用與 Service 相同的命名空間和名稱的 ServiceImport 自訂資源。
  • Endpoints 物件,使用與 Service 相同的命名空間和隨機名稱。

使用 MCS 的優點

使用 MCS 可享有下列優點:

  • 高可用性:在多個區域的叢集之間執行相同服務,可提升容錯能力。如果叢集中的服務無法使用,要求可以容錯移轉,並由其他叢集提供服務。透過 MCS,您可以管理叢集間服務的通訊,進而提升容器化應用程式的可用性。
  • 有狀態和無狀態服務:有狀態和無狀態服務的運作相依性和複雜度不同,因此運作上的取捨也不同。通常,由於沒有狀態管理,因此更容易擴充、升級及遷移工作負載,且可用性更高。MCS 可讓您將有狀態和無狀態工作負載的叢集分開,使其獨立、隔離且更容易管理。
  • 共用服務:通常會建立個別的 Kubernetes 叢集,以提高可用性、更妥善地管理有狀態和無狀態服務,並更輕鬆地遵守資料主權規定。不過,許多服務 (例如使用 Prometheus 進行監控使用 Vault 進行密鑰管理) 通常會在所有叢集之間共用。MCS 可讓您在獨立叢集中輕鬆設定共用的通用服務,供所有功能叢集使用,不必為每個叢集都建立本機服務副本。
  • 遷移:將現有應用程式翻新為容器化微服務架構時,通常需要在多個 Kubernetes 叢集中部署服務。MCS 提供機制,協助彌合這些服務之間的通訊,讓您更輕鬆地移轉應用程式。這項功能特別實用,因為您可以將相同的服務部署到兩個不同的叢集,並允許流量從一個叢集或應用程式轉移到另一個叢集或應用程式。

後續步驟

  • 進一步瞭解多叢集 Ingress,這項功能可為南北向和東西向流量方向提供服務。
  • 進一步瞭解 Cloud Service Mesh,這項服務可讓您更精細地控管路由和流量控管。