Servizi multi-cluster

Questa pagina fornisce una panoramica sul funzionamento dei servizi multi-cluster (MCS) di GKE. Per scoprire come utilizzare MCS, consulta Configurare i servizi multi-cluster.

Panoramica di MCS

Il noto oggetto Service di Kubernetes consente di scoprire e accedere a un servizio all'interno dei limiti di un singolo cluster Kubernetes. Tuttavia, a volte potresti voler suddividere le applicazioni in più cluster per soddisfare i requisiti di gestione dello stato, privacy, scalabilità, disponibilità e sovranità dei dati. Con MCS, puoi creare applicazioni Kubernetes che si estendono su più cluster.

MCS è un meccanismo di Service Discovery e chiamata dei servizi tra cluster per Google Kubernetes Engine (GKE) che sfrutta l'oggetto Service esistente. I servizi abilitati con questa funzionalità sono rilevabili e accessibili tra i cluster con un IP virtuale, in modo simile al comportamento di un servizio ClusterIP accessibile in un cluster. Come i servizi esistenti, MCS è compatibile con le API open source e basate sulla community, garantendo la portabilità dei carichi di lavoro.

MCS è una funzionalità di GKE. MCS configura le zone e i record Cloud DNS per ogni servizio esportato nei cluster della tua fleet. Una fleet consente di raggruppare e normalizzare logicamente i cluster GKE, semplificando l'amministrazione dell'infrastruttura e consentendo l'utilizzo di funzionalità multi-cluster come MCS. Puoi scoprire di più sui vantaggi delle fleet e su come crearle nella documentazione sulla gestione delle fleet.

I servizi esportati, indipendentemente dal tipo, hanno sempre un record Cloud DNS, mentre i servizi di tipo Headless esportati hanno record per ogni pod di backend con un nome host, inclusi i pod in StatefulSet. L'utilizzo di Cloud DNS comporta costi aggiuntivi. La fatturazione viene eseguita in base ai prezzi di Cloud DNS.

Per esportare un servizio con MCS, crea una risorsa personalizzata ServiceExport utilizzando lo stesso spazio dei nomi e lo stesso nome del servizio. MCS importa automaticamente il servizio in ogni cluster della fleet. Quando MCS importa un servizio, crea:

  • Una risorsa personalizzata ServiceImport utilizzando lo stesso spazio dei nomi e lo stesso nome del servizio.
  • Un oggetto Endpoints utilizzando lo stesso spazio dei nomi del servizio e un nome casuale.

Vantaggi dell'utilizzo di MCS

L'utilizzo di MCS offre i seguenti vantaggi:

  • Alta affidabilità: l'esecuzione dello stesso servizio su cluster in più regioni offre una maggiore tolleranza agli errori. Se un servizio in un cluster non è disponibile, la richiesta può eseguire il failover e essere gestita da altri cluster. Con MCS, è possibile gestire la comunicazione tra i servizi tra i cluster per migliorare la disponibilità delle applicazioni containerizzate.
  • Servizi stateful e stateless: i servizi stateful e stateless hanno dipendenze e complessità operative diverse e presentano compromessi operativi diversi. In genere, l'assenza di gestione dello stato semplifica la scalabilità, l'upgrade e la migrazione di un carico di lavoro con una maggiore disponibilità. MCS consente di separare i cluster per i carichi di lavoro stateful e stateless e renderli indipendenti, isolati e più facili da gestire.
  • Servizi condivisi: è comune creare cluster Kubernetes separati per ottenere una maggiore disponibilità, una migliore gestione dei servizi stateful e stateless e una maggiore conformità ai requisiti di sovranità dei dati. Tuttavia, molti servizi, come il monitoraggio con Prometheus o l'utilizzo della gestione dei secret con Vault sono spesso condivisi tra tutti i cluster. Anziché richiedere a ogni cluster la propria replica del servizio locale, MCS semplifica la configurazione di servizi condivisi comuni in un cluster separato utilizzato da tutti i cluster funzionali.
  • Migrazione: la modernizzazione di un'applicazione esistente in un'architettura basata su microservizi containerizzati spesso richiede il deployment di servizi su più cluster Kubernetes. MCS fornisce un meccanismo per facilitare la comunicazione tra questi servizi, semplificando la migrazione delle applicazioni. Questo è particolarmente utile perché puoi eseguire il deployment dello stesso servizio in due cluster diversi e il traffico può passare da un cluster o un'applicazione all'altro.

Passaggi successivi