Multi-cluster Services

This page provides you with an overview of how GKE multi-clusterServices (MCS) works. To learn how to use MCS, seeConfiguring multi-cluster Services.

Overview of MCS

Kubernetes' familiarServiceobject lets you discover and access a Service within theconfines of a single Kubernetes cluster. However, sometimes you might want tosplit applications into multiple clusters, to address state management, privacy,scalability, availability, and data sovereignty requirements. With MCS, you canbuild Kubernetes applications that span multiple clusters.

MCS is a cross-cluster Service discovery and invocationmechanism for Google Kubernetes Engine (GKE) that leverages the existing Serviceobject. Services enabled with this feature are discoverable and accessibleacross clusters with a virtual IP, matching the behavior of aClusterIP Serviceaccessible in a cluster. Just like your existing Services, MCS iscompatible with community-driven and open APIs, ensuring your workloads remainportable.

MCS is a feature of GKE. MCS configures Cloud DNS zones andrecords for each exported Service in yourfleet clusters. A fleet lets you logically group and normalize your GKE clusters, making administration of infrastructure easier and enabling the use of multi-cluster features such as MCS. You can learn more about the benefits of fleets and how to create them in thefleet management documentation.

Exported Services regardless of type always have one Cloud DNS record, and exported Headless type services have records for each backend Pod with a hostname, including Pods in StatefulSets.Using Cloud DNS incurs additional charges. You are billed according toCloud DNS pricing.

To export a Service with MCS, create a ServiceExport custom resource using the samenamespace and name as the Service. MCS automatically imports the Service to eachcluster in the fleet. When MCS imports a Service, it creates:

  • A ServiceImport custom resource using the same namespace and name as the Service.
  • An Endpoints object using the same namespace as the Service and a random name.

Benefits of using MCS

Using MCS provides you with the following benefits:

  • High availability: Running the same Service across clusters inmultiple regions provides you with improved fault tolerance. If a Service ina cluster is unavailable, the request can fail over and be served from otherclusters. With MCS, it's possible to manage the communication betweenServices across clusters, to improve the availability of your containerizedapplications.
  • Stateful and stateless Services: Stateful and stateless Serviceshave different operational dependencies and complexities and presentdifferent operational tradeoffs. Typically, the absence of state managementmakes it easier to scale, upgrade, and migrate a workload with higheravailability. MCS lets you separate clusters for stateful and statelessworkloads and make them independent, isolated, and easier to manage.
  • Shared Services: It's common to create separate Kubernetesclusters to get higher availability, better management of stateful andstateless Services, and easier compliance with data sovereigntyrequirements. However, many Services such asmonitoring with Prometheusorusing secrets management with Vault are often shared among all clusters. Instead of each cluster requiring itsown local Service replica, MCS makes it easier to set up common sharedServices in a separate cluster that all functional clusters use.
  • Migration: Modernizing an existing application into a containerizedmicroservice-based architecture often requires you to deploy Servicesacross multiple Kubernetes clusters. MCS provides you with a mechanism tohelp bridge the communication between those Services, making it easier tomigrate your applications. This is especially helpful as you can deploythe same Service to two different clusters and traffic is allowed to shiftfrom one cluster or application to another.

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.