本頁面提供 GKE 多叢集服務 (MCS) 的運作方式總覽。如要瞭解如何使用 MCS,請參閱設定多叢集服務。
MCS 總覽
您可以使用 Kubernetes 熟悉的 Service 物件,在單一 Kubernetes 叢集內探索及存取 Service。不過,有時您可能需要將應用程式分割成多個叢集,以因應狀態管理、隱私權、可擴充性、可用性和資料主權需求。使用 MCS,您可以建構跨多個叢集的 Kubernetes 應用程式。
MCS 是 Google Kubernetes Engine (GKE) 的跨叢集服務探索和叫用機制,可運用現有的服務物件。啟用這項功能後,服務就能透過虛擬 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,這項服務可讓您更精細地控管路由和流量控管。