Esegui la migrazione dei container in Google Cloud: esegui la migrazione di Kubernetes in GKE

Last reviewed 2023-05-22 UTC

Questo documento ti aiuta a pianificare, progettare e implementare la migrazione da un ambiente Kubernetes autogestito a Google Kubernetes Engine (GKE). Se eseguita in modo errato, spostare le app da un ambiente all'altro può essere un'attività complessa, quindi è necessario pianificare ed eseguire con attenzione la migrazione.

Questo documento fa parte di una serie in più parti sulla migrazione a Google Cloud. Se vuoi una panoramica della serie, consulta Eseguire la migrazione a Google Cloud: scegliere il percorso di migrazione.

Questo documento fa parte di una serie che illustra la migrazione dei container in Google Cloud:

Questo documento è utile se prevedi di eseguire la migrazione da un ambiente Kubernetes autogestito a GKE. Il tuo ambiente potrebbe essere in esecuzione in un ambiente on-premise, in un ambiente di hosting privato o in un altro cloud provider. Questo documento è utile anche se stai valutando l'opportunità di eseguire la migrazione e vuoi esplorarne l'aspetto.

L'utilizzo di GKE offre i seguenti vantaggi:

Il seguente diagramma illustra il percorso del tuo percorso di migrazione.

Percorso di migrazione con quattro fasi.

Durante ogni passaggio della migrazione, segui le fasi definite in Eseguire la migrazione a Google Cloud: inizia:

  1. Valutazione e scoperta dei carichi di lavoro.
  2. Pianificazione e costruzione di fondamenta.
  3. Deployment dei carichi di lavoro.
  4. Ottimizzare l'ambiente.

Valuta il tuo ambiente

Nella fase di valutazione, determini i requisiti e le dipendenze per la migrazione del tuo ambiente Kubernetes autogestito a GKE:

  1. Crea un inventario completo delle tue app.
  2. Cataloga le app in base alle loro proprietà e dipendenze.
  3. Addestra e istruisci i tuoi team su Google Cloud.
  4. Crea un esperimento e un proof of concept su Google Cloud.
  5. Calcolare il costo totale di proprietà (TCO) dell'ambiente di destinazione.
  6. Scegli i carichi di lavoro di cui vuoi eseguire prima la migrazione.

Le seguenti sezioni si basano su Migrazione a Google Cloud: valutazione e scoperta dei carichi di lavoro.

Crea i tuoi inventari

Per definire l'ambito della migrazione, devi comprendere il tuo attuale ambiente Kubernetes. Raccogli prima le informazioni sui cluster, poi ti concentri sui carichi di lavoro di cui è stato eseguito il deployment in questi cluster e sulle dipendenze dei carichi di lavoro. Alla fine della fase di valutazione, avrai due inventari: uno per i cluster e uno per i carichi di lavoro di cui è stato eseguito il deployment nei cluster.

Per creare l'inventario dei tuoi cluster, considera quanto segue per ogni cluster:

  • Numero e tipo di nodi: Quando conosci il numero di nodi e le caratteristiche di ogni nodo nel tuo ambiente attuale, puoi ridimensionare i cluster quando passi a GKE. I nodi nel nuovo ambiente potrebbero essere eseguiti con un'architettura hardware diversa da quelli utilizzati nel tuo ambiente. Le prestazioni di ogni generazione di architettura sono diverse, pertanto il numero di nodi necessario nel nuovo ambiente potrebbe essere diverso dal tuo ambiente. Valuta qualsiasi tipo di hardware che utilizzi nei tuoi nodi, ad esempio dispositivi di archiviazione ad alte prestazioni, GPU e TPU.
  • Cluster interno o esterno. Valuta a quali aggressori, interni o esterni, è esposto ogni cluster. Per supportare i tuoi casi d'uso, questa valutazione include i carichi di lavoro in esecuzione nel cluster e le interfacce che interagiscono con i cluster.
  • Multitenancy. Se gestisci cluster multi-tenant nel tuo ambiente, valuta se funzionano nel nuovo ambiente Google Cloud. Questo è un buon momento per valutare come migliorare i cluster multi-tenant perché la tua strategia multi-tenancy influenza il modo in cui crei le tue basi su Google Cloud.
  • Versione di Kubernetes. Raccogli informazioni sulla versione Kubernetes dei tuoi cluster per valutare se esiste una mancata corrispondenza tra queste versioni e quelle disponibili in GKE. Se stai eseguendo una versione precedente o rilasciata di recente, è possibile che tu stia utilizzando funzionalità che non sono disponibili in GKE. Le funzionalità potrebbero essere deprecate o la versione di Kubernetes che le fornisce non è ancora disponibile in GKE.
  • Ciclo di upgrade di Kubernetes. Per mantenere un ambiente affidabile, scopri come gestisci gli upgrade di Kubernetes e come il tuo ciclo di upgrade è correlato agli upgrade di GKE.
  • Pool di nodi. Se utilizzi qualsiasi forma di raggruppamento dei nodi, ti consigliamo di considerare come vengono mappati questi raggruppamenti al concetto di pool di nodi in GKE, perché i tuoi criteri di raggruppamento potrebbero non essere adatti per GKE.
  • Inizializzazione dei nodi. Valuta il modo in cui inizializzare ogni nodo prima di contrassegnarlo come disponibile per l'esecuzione dei carichi di lavoro in modo da poter trasferire queste procedure di inizializzazione su GKE.

I seguenti elementi che valuti nel tuo inventario sono incentrati sulla sicurezza della tua infrastruttura e dei tuoi cluster Kubernetes:

  • Spazi dei nomi. Se utilizzi spazi dei nomi Kubernetes nei tuoi cluster per separare logicamente le risorse, valuta quali risorse sono presenti in ogni spazio dei nomi e scopri perché hai creato questa separazione. Ad esempio, potresti utilizzare gli spazi dei nomi nell'ambito della tua strategia multi-tenancy. I carichi di lavoro di cui è stato eseguito il deployment in spazi dei nomi potrebbero essere prenotati per i componenti di sistema Kubernetes e potresti non avere così tanto controllo in GKE.
  • Controllo dell'controllo dell'accesso basato sui ruoli (RBAC). Se utilizzi l'autorizzazione RBAC nei cluster, elenca una descrizione di tutti i ClusterRole e ClusterRoleBinding che hai configurato nei cluster.
  • Criteri di rete. Elenca tutti i criteri di rete che hai configurato nei cluster e scopri come funzionano i criteri di rete in GKE.
  • Contesto di sicurezza dei pod. Acquisisci informazioni sui contesti di sicurezza dei pod che hai configurato nei cluster e scopri come funzionano in GKE.
  • Account di servizio. Se un processo nel cluster interagisce con il server API Kubernetes, acquisisci informazioni sugli account di servizio che utilizzano.

Dopo aver completato l'inventario dei cluster Kubernetes e valutato la sicurezza del tuo ambiente, crea l'inventario dei carichi di lavoro di cui è stato eseguito il deployment nei cluster. Durante la valutazione dei carichi di lavoro, raccogli informazioni sui seguenti aspetti:

  • Pod e controller. Per dimensionare i cluster nel nuovo ambiente, valuta quante istanze di ciascun carico di lavoro è stato eseguito e se stai utilizzando quote delle risorse e limiti di consumo delle risorse di calcolo. Raccogli informazioni sui carichi di lavoro in esecuzione sui nodi del piano di controllo di ogni cluster e sui controller utilizzati da ogni carico di lavoro. Ad esempio, quanti deployment stai utilizzando? Quanti DaemonSets stai utilizzando?
  • Job e CronJobs. I cluster e i carichi di lavoro potrebbero dover eseguire job o CronJob durante l'inizializzazione o le procedure operative. Valuta il numero di istanze di Job e CronJob di cui hai eseguito il deployment, nonché le responsabilità e i criteri di completamento per ogni istanza.
  • Gestori della scalabilità automatica di Kubernetes. Per eseguire la migrazione dei criteri di scalabilità automatica nel nuovo ambiente, scopri come funzionano su GKE l'Horizontal Pod Autoscaler, il gestore della scalabilità automatica pod verticale e il gestore della scalabilità automatica dei pod multidimensionali.
  • Carichi di lavoro stateless e stateful. I carichi di lavoro stateless non archiviano i dati o lo stato nel cluster o nell'archiviazione permanente. Le applicazioni stateful salvano i dati per utilizzarli in seguito. Valuta per ogni carico di lavoro quali componenti sono stateless e quali stateful, dato che la migrazione dei carichi di lavoro stateful è in genere più difficile rispetto a quella di carichi di lavoro stateless.
  • Funzionalità di Kubernetes. Dall'inventario del cluster, sai quale versione di Kubernetes viene eseguita da ogni cluster. Consulta le note di rilascio di ogni versione di Kubernetes per sapere quali funzionalità vengono fornite e quali sono deprecate. Quindi valuta i tuoi carichi di lavoro in base alle funzionalità Kubernetes di cui hai bisogno. L'obiettivo di questa attività è sapere se stai utilizzando funzionalità deprecate o non ancora disponibili in GKE. Se noti funzionalità non disponibili, esegui la migrazione dalle funzionalità deprecate e adotta quelle nuove quando sono disponibili in GKE.
  • Spazio di archiviazione. Per i carichi di lavoro stateful, valuta se utilizzano PersistenceVolumeClaims. Elenca tutti i requisiti di archiviazione, ad esempio dimensioni e modalità di accesso, e in che modo queste attestazioni di volume PersistenceVolumeClaim vengono mappate ai volumi PersistenceVolume. Per tenere conto della crescita futura, valuta se è necessario espandere qualsiasi rivendicazione VolumePersistence.
  • Configurazione e inserimento dei secret. Per evitare di ricreare gli artefatti di cui è possibile eseguire il deployment ogni volta che viene modificata la configurazione del tuo ambiente, inserisci configurazione e secret nei pod utilizzando ConfigMaps e Secret. Per ogni carico di lavoro, valuta quali oggetti ConfigMap e Secret sono utilizzati dal carico di lavoro e come li stai compilando.
  • Dipendenze. È probabile che i carichi di lavoro non funzionino in modo isolato. Potrebbero avere dipendenze, interne al cluster o da sistemi esterni. Per ogni carico di lavoro, acquisisci le dipendenze e verifica se i carichi di lavoro hanno una tolleranza per il momento in cui le dipendenze non sono disponibili. Ad esempio, le dipendenze comuni includono file system distribuiti, database, piattaforme di distribuzione segreta, sistemi di gestione di identità e accessi, meccanismi di Service Discovery e qualsiasi altro sistema esterno.
  • Servizi Kubernetes. Per esporre i carichi di lavoro a clienti interni ed esterni, utilizza i servizi. Devi conoscere il tipo di ciascun servizio. Per i servizi esposti all'esterno, valuta in che modo il servizio interagisce con il resto dell'infrastruttura. Ad esempio, in che modo la tua infrastruttura supporta i servizi LoadBalancer e gli oggetti Ingress? Quali controller Ingress hai implementato nei tuoi cluster?
  • Mesh di servizi. Se utilizzi un mesh di servizi nel tuo ambiente, ne valuti la configurazione. Devi anche sapere quanti cluster copre, quali servizi fanno parte del mesh e come modificare la topologia del mesh. Ad esempio, stai utilizzando un'iniezione automatica di file collaterali per aggiungere automaticamente i file collaterali ai pod Kubernetes?
  • Invecchiamenti e tolleranze e affinità e anti-affinità. Per ogni pod e nodo, valuta se hai configurato incompatibilità dei nodi, tolleranze dei pod o affinità per personalizzare la pianificazione dei pod nei tuoi cluster Kubernetes. Queste proprietà potrebbero anche fornirti insight su possibili configurazioni di nodi o pod non omogenei e potrebbero significare che i pod, i nodi o entrambi devono essere valutati con particolare attenzione e attenzione. Ad esempio, se hai configurato un particolare insieme di pod in modo che venga pianificato solo su determinati nodi nel tuo cluster Kubernetes, è possibile che i pod abbiano bisogno di risorse specializzate disponibili solo su quei nodi.

Dopo aver valutato i cluster e i relativi carichi di lavoro, valuta il resto dei servizi e degli aspetti di supporto nella tua infrastruttura, ad esempio quanto segue:

Completa la valutazione

Dopo aver creato gli inventari relativi ai tuoi cluster e carichi di lavoro Kubernetes, completa le altre attività della fase di valutazione in Esegui la migrazione a Google Cloud: valuta e rileva i tuoi carichi di lavoro.

Pianifica e getta le basi

Nella fase di pianificazione e creazione, esegui il provisioning e la configurazione dell'infrastruttura cloud e dei servizi che supportano i carichi di lavoro su Google Cloud:

  1. Creare una gerarchia di risorse.
  2. Configurare la gestione di identità e accessi.
  3. Configura la fatturazione.
  4. Configura la connettività di rete.
  5. Rafforza la tua sicurezza.
  6. Configura il monitoraggio e gli avvisi.

Se hai già adottato Infrastructure as Code per gestire i carichi di lavoro nel tuo ambiente Kubernetes, puoi applicare lo stesso processo al tuo ambiente Google Cloud. Devi analizzare i descrittori Kubernetes perché alcune risorse Google Cloud di cui GKE esegue automaticamente il provisioning sono configurabili utilizzando etichette e annotazioni di Kubernetes. Ad esempio, puoi eseguire il provisioning di un bilanciatore del carico interno anziché di uno esterno aggiungendo un'annotazione a un servizio LoadBalancer.

Le sezioni seguenti si basano su Eseguire la migrazione a Google Cloud: creare le basi.

Crea una gerarchia di risorse

Per progettare una gerarchia di risorse efficiente, considera il modo in cui le tue strutture organizzative e aziendali vengono mappate a Google Cloud, come descritto in Eseguire la migrazione a Google Cloud: crea le tue basi.

Ad esempio, se hai bisogno di un ambiente multi-tenant su GKE, puoi scegliere tra le seguenti opzioni:

  • Creazione di un progetto Google Cloud per ogni tenant.
  • Condivisione di un progetto tra diversi tenant e provisioning di più cluster GKE.
  • Utilizzo degli spazi dei nomi Kubernetes.

La scelta dipende dalle tue esigenze di isolamento, complessità e scalabilità. Ad esempio, avere un progetto per tenant isola i tenant l'uno dall'altro, ma la gerarchia delle risorse diventa più complessa da gestire a causa dell'elevato numero di progetti. Tuttavia, sebbene la gestione degli spazi dei nomi Kubernetes sia relativamente più semplice rispetto a una gerarchia di risorse complessa, questa opzione non garantisce un livello di isolamento elevato. Ad esempio, il piano di controllo potrebbe essere condiviso tra tenant.

Configura la gestione di identità e accessi

Identity and Access Management fornisce gli strumenti per configurare centralmente un controllo dell'accesso granulare alle risorse cloud. Per maggiori informazioni, consulta Identity and Access Management.

Esamina in che modo Kubernetes RBAC interagisce con la gestione di identità e accessi in Google Cloud e configuralo in base ai requisiti raccolti nella fase di valutazione.

Configura la fatturazione

Prima di eseguire il provisioning di qualsiasi risorsa Google Cloud, configura Fatturazione Cloud e comprendi il modello di prezzi di GKE. Per ulteriori informazioni, consulta la pagina relativa alla billing.

Configurazione della connettività di rete

La configurazione di rete è un aspetto fondamentale del tuo ambiente. Valuta il modello di rete GKE e i requisiti di connettività dei tuoi carichi di lavoro. Poi puoi iniziare a pianificare la configurazione di rete. Per maggiori informazioni, consulta Connettività e networking.

Rafforza la tua sicurezza

Comprendere le differenze tra il modello di sicurezza del tuo ambiente e il modello di Google Cloud e come rafforzare la sicurezza dei tuoi cluster GKE sono fondamentali per proteggere gli asset critici. Per maggiori informazioni, consulta la pagina relativa alla sicurezza.

Configura monitoraggio e avvisi

Avere un quadro chiaro delle prestazioni dell'infrastruttura e dei carichi di lavoro è fondamentale per individuare le aree da migliorare. GKE offre integrazioni profonde con l'osservabilità di Google Cloud, che ti consentono di ottenere informazioni di logging e monitoraggio sui cluster e sui carichi di lavoro GKE all'interno di questi cluster. Per maggiori informazioni, consulta Monitoraggio e avvisi.

Esegui il deployment dei carichi di lavoro

Nella fase di deployment, esegui queste operazioni:

  1. Esegui il provisioning e la configurazione del tuo ambiente GKE.
  2. Configura i tuoi cluster GKE.
  3. Esegui la migrazione dei dati dal tuo ambiente di origine a Google Cloud.
  4. Esegui il deployment dei carichi di lavoro nel tuo ambiente GKE.
  5. Convalida i carichi di lavoro.
  6. Esporre i carichi di lavoro in esecuzione su GKE.
  7. Shift il traffico dall'ambiente di origine all'ambiente GKE.
  8. Rimuovi l'ambiente di origine.

Esegui il provisioning e la configurazione della piattaforma e degli ambienti di runtime

Prima di spostare qualsiasi carico di lavoro nel nuovo ambiente Google Cloud, esegui il provisioning dei cluster GKE.

Dopo la fase di valutazione, sai come eseguire il provisioning dei cluster GKE nel nuovo ambiente Google Cloud in base alle tue esigenze. Puoi eseguire il provisioning di quanto segue:

Per saperne di più sul provisioning dei cluster GKE, consulta:

Configura i tuoi cluster

Dopo aver eseguito il provisioning dei cluster GKE e prima del deployment di qualsiasi carico di lavoro o migrazione dei dati, configura gli spazi dei nomi, l'RBAC, i criteri di rete, le quote delle risorse e altri oggetti Kubernetes e GKE per ogni cluster GKE.

Per configurare gli oggetti Kubernetes e GKE nei tuoi cluster GKE, ti consigliamo di:

  1. Assicurati di disporre delle credenziali e delle autorizzazioni necessarie per accedere sia ai cluster nel tuo ambiente di origine sia nell'ambiente GKE.
  2. Valutare se gli oggetti nei cluster Kubernetes del tuo ambiente di origine sono compatibili con GKE e in che modo le implementazioni che supportano questi oggetti differiscono dall'ambiente di origine e da GKE.
  3. Esegui il refactoring di qualsiasi oggetto incompatibile per renderlo compatibile con GKE, o ritiralo.
  4. Esegui la migrazione di questi oggetti nei tuoi cluster GKE.
  5. Configura eventuali oggetti aggiuntivi di cui hai bisogno nei tuoi cluster GKE.

Esegui la migrazione della configurazione del cluster

Per eseguire la migrazione della configurazione dei tuoi cluster Kubernetes dall'ambiente di origine ai tuoi cluster GKE, potresti utilizzare il seguente approccio:

  • Se hai adottato processi Infrastructure as Code per configurare gli oggetti nei cluster Kubernetes nel tuo ambiente di origine, puoi:

    1. Esegui la migrazione di oggetti compatibili con GKE con solo modifiche di minore entità ai metadati, come nomi, località o spazio dei nomi degli oggetti utilizzando gli strumenti Kubernetes (kubectl) o i servizi gestiti (Config Sync).
    2. Esegui il refactoring o ritira gli oggetti non compatibili con GKE.
  • Se non hai adottato i processi Infrastructure as Code, puoi:

    • Esegui la migrazione della configurazione degli oggetti Kubernetes dall'ambiente di origine al tuo ambiente GKE utilizzando strumenti di terze parti come Crane e Velero.

Migrazione dei dati

Per eseguire la migrazione dei dati necessari per i carichi di lavoro stateful dall'ambiente di origine all'ambiente GKE, ti consigliamo di progettare un piano di migrazione dei dati seguendo le indicazioni riportate in Migrazione a Google Cloud: trasferimento di set di dati di grandi dimensioni.

Esegui il provisioning di tutta l'infrastruttura di archiviazione necessaria prima di spostare i dati. Se utilizzi provisioner di StorageClass, devi configurarli nei nuovi cluster.

Per ulteriori informazioni sulle opzioni di archiviazione dei dati disponibili in GKE, consulta Configurazione dell'archiviazione. Ad esempio, puoi utilizzare i dischi permanenti di Compute Engine, a livello di zona o replicati in un'intera regione, oppure puoi utilizzare Filestore.

Dopo aver eseguito il provisioning di StorageClass, esegui il provisioning di tutti i PersistentVolume necessari per archiviare i dati di cui eseguire la migrazione. Poi esegui la migrazione dei dati dall'ambiente di origine a questi PersistentVolume. Le specifiche di questa migrazione dei dati dipendono dalle caratteristiche dell'ambiente di origine. Ad esempio, puoi:

  1. Eseguire il provisioning di un'istanza Compute Engine.
  2. Collega un disco permanente all'istanza di Compute Engine.
  3. Copia i dati dall'ambiente di origine sul disco permanente.
  4. Arresta l'istanza Compute Engine.
  5. Scollega il disco permanente dall'istanza Compute Engine.
  6. Configura il disco permanente come PersistentVolume di GKE.
  7. Ritira l'istanza di Compute Engine.

Per ulteriori informazioni sull'uso dei dischi permanenti di Compute Engine come PersistentVolume di GKE, consulta Utilizzo di dischi permanenti preesistenti come PersistentVolume.

Esegui il deployment dei carichi di lavoro

Per eseguire il deployment dei carichi di lavoro, consigliamo uno dei seguenti approcci:

  • Implementare un processo di deployment su Google Cloud.
  • Esegui il refactoring dei processi di deployment esistenti per eseguire il deployment dei carichi di lavoro nel tuo ambiente GKE.

La fase di deployment è anche un'opportunità per modernizzare i processi di deployment e i carichi di lavoro. Ad esempio, se utilizzi pod nel tuo ambiente, valuta la possibilità di eseguire la migrazione di questi carichi di lavoro ai deployment Kubernetes.

Per ulteriori informazioni sul refactoring dei processi di deployment, consulta Migrazione a Google Cloud: migrazione dai deployment manuali ai container e all'automazione. Contiene indicazioni per la migrazione dai deployment manuali agli strumenti di orchestrazione dei container e all'automazione.

Quando i processi di deployment sono pronti, puoi eseguire il deployment dei carichi di lavoro in GKE.

Implementare un processo di deployment su Google Cloud

Per implementare i processi di deployment su Google Cloud, utilizza la scalabilità, le operazioni gestite e la sicurezza "by design" dei prodotti Google Cloud.

Per ulteriori informazioni sull'implementazione dei processi di deployment su Google Cloud, consulta:

Esegui il refactoring dei processi di deployment esistenti

Sebbene non sia strettamente necessario per il successo, puoi anche eseguire il refactoring dei processi di deployment durante la migrazione. Ad esempio, puoi modernizzare e automatizzare i processi di deployment esistenti e implementarli su Google Cloud.

La migrazione dei processi di deployment in Google Cloud in contemporanea alla migrazione dei carichi di lavoro può essere complessa e può aumentare il rischio di errori della migrazione. Per migrazioni particolarmente complesse, puoi anche valutare la migrazione del processo di deployment una seconda volta e continuare a utilizzare quelle attuali per eseguire il deployment dei carichi di lavoro nel tuo ambiente GKE. Questo approccio consente di ridurre la complessità della migrazione. Se continui a utilizzare i processi di deployment esistenti, puoi semplificare il processo di migrazione.

Convalida i carichi di lavoro

Dopo aver eseguito il deployment dei carichi di lavoro nel tuo ambiente GKE, ma prima di esporli agli utenti, ti consigliamo di eseguire verifiche e verifiche approfondite. Questi test possono aiutarti a verificare se i carichi di lavoro si comportano come previsto. Ad esempio, puoi:

  • Esegui test di integrazione, di carico, di conformità, di affidabilità e altre procedure di verifica per assicurarti che i carichi di lavoro funzionino entro i parametri previsti e in base alle relative specifiche.
  • Esamina i log, le metriche e i report sugli errori in Osservabilità di Google Cloud per identificare eventuali problemi, nonché individuare le tendenze per anticipare i problemi prima che si verifichino.

Per ulteriori informazioni sulla convalida dei carichi di lavoro, consulta Test dell'affidabilità.

Esponi i carichi di lavoro

Una volta completati i test di convalida dei carichi di lavoro in esecuzione nel tuo ambiente GKE, esponi i carichi di lavoro per renderli raggiungibili.

Per esporre i carichi di lavoro in esecuzione nell'ambiente GKE, puoi usare i servizi Kubernetes e un mesh di servizi.

Per ulteriori informazioni su come GKE supporta i servizi Kubernetes, consulta Servizi.

Per maggiori informazioni sull'esposizione dei carichi di lavoro in esecuzione in GKE, consulta:

Shift il traffico nel tuo ambiente Google Cloud

Dopo aver verificato che i carichi di lavoro sono in esecuzione nel tuo ambiente GKE e dopo averli esposti ai clienti, sposti il traffico dall'ambiente di origine all'ambiente GKE. Per aiutarti a evitare migrazioni su larga scala e tutti i rischi correlati, ti consigliamo di spostare gradualmente il traffico dall'ambiente di origine a GKE.

A seconda di come hai progettato l'ambiente GKE, hai a disposizione diverse opzioni per implementare un meccanismo di bilanciamento del carico che sposta gradualmente il traffico dall'ambiente di origine all'ambiente di destinazione. Ad esempio, puoi implementare un criterio di risoluzione DNS che risolve i record DNS in base a un determinato criterio per risolvere una determinata percentuale di richieste agli indirizzi IP appartenenti al tuo ambiente GKE. In alternativa, puoi implementare un meccanismo di bilanciamento del carico utilizzando indirizzi IP virtuali e bilanciatori del carico di rete.

Dopo aver iniziato a spostare gradualmente il traffico nel tuo ambiente GKE, ti consigliamo di monitorare il comportamento dei carichi di lavoro man mano che aumentano.

Infine, eseguirai un cutover, che si verifica quando sposti tutto il traffico dall'ambiente di origine all'ambiente GKE.

Per ulteriori informazioni sul bilanciamento del carico, consulta Bilanciamento del carico sul frontend.

Scommetti l'ambiente di origine

Dopo che i carichi di lavoro nel tuo ambiente GKE gestiscono correttamente le richieste, dismetti l'ambiente di origine.

Prima di iniziare a ritirare le risorse nel tuo ambiente di origine, ti consigliamo di:

  • Esegui il backup di tutti i dati per ripristinare le risorse nell'ambiente di origine.
  • Avvisa gli utenti prima di ritirare l'ambiente.

Per ritirare l'ambiente di origine:

  1. Ritira i carichi di lavoro in esecuzione nei cluster nel tuo ambiente di origine.
  2. Elimina i cluster nell'ambiente di origine.
  3. Elimina le risorse associate a questi cluster, ad esempio gruppi di sicurezza, bilanciatori del carico e reti virtuali.

Per evitare di lasciare risorse orfane, l'ordine in cui dismetti le risorse nell'ambiente di origine è importante. Ad esempio, alcuni provider richiedono la dismissione dei servizi Kubernetes che portano alla creazione di bilanciatori del carico prima di poter dismettere le reti virtuali contenenti questi bilanciatori del carico.

Ottimizza il tuo ambiente

L'ottimizzazione è l'ultima fase della migrazione. In questa fase, rendi il tuo ambiente più efficiente di prima. In questa fase, esegui più iterazioni di un loop ripetibile fino a quando il tuo ambiente non soddisfa i requisiti di ottimizzazione. I passaggi di questo loop ripetibile sono i seguenti:

  1. Valutazione dell'ambiente attuale, dei team e del loop di ottimizzazione.
  2. Stabilire i requisiti e gli obiettivi di ottimizzazione.
  3. Ottimizzazione del tuo ambiente e dei tuoi team.
  4. Ottimizzazione del loop di ottimizzazione.

Le sezioni seguenti si basano su Migrazione a Google Cloud: ottimizza il tuo ambiente.

Valutare l'ambiente attuale, i team e il loop di ottimizzazione

Mentre la prima valutazione si concentra sulla migrazione dal tuo ambiente a GKE, questa valutazione è personalizzata per la fase di ottimizzazione.

Definisci i tuoi requisiti di ottimizzazione

Esamina i seguenti requisiti di ottimizzazione per il tuo ambiente GKE:

  • Implementare processi di deployment avanzati. Processi come i deployment canary o i deployment blu/verde offrono maggiore flessibilità e possono aumentare l'affidabilità dell'ambiente, estendere i test e ridurre l'impatto di qualsiasi problema per gli utenti.
  • Configura un mesh di servizi. Con l'introduzione di un mesh di servizi nel tuo ambiente, puoi utilizzare funzionalità come l'osservabilità, la gestione del traffico e l'autenticazione reciproca per i tuoi servizi, nonché ridurre il carico sui team DevOps. Puoi eseguire il deployment di un mesh di servizi multi-cluster per segmentare meglio i carichi di lavoro o di un mesh di servizi espanso per supportare la migrazione nel nuovo ambiente.
  • Configura la scalabilità automatica. Hai a disposizione opzioni complementari diverse per scalare automaticamente il tuo ambiente GKE. Puoi scalare automaticamente i cluster e i carichi di lavoro all'interno di ogni cluster. Configurando il gestore della scalabilità automatica dei cluster, puoi ridimensionare automaticamente un cluster GKE in base alle richieste dei tuoi carichi di lavoro, aggiungendo o rimuovendo nodi worker al cluster. Se vuoi scalare automaticamente i carichi di lavoro, puoi regolare le richieste e i limiti di consumo di CPU e memoria con il gestore della scalabilità automatica pod verticale. Quando utilizzi il gestore della scalabilità automatica, non devi preoccuparti dei valori da specificare per le richieste di CPU e memoria di ogni container. Puoi anche esportare le metriche fornite dal gestore della scalabilità automatica per ridimensionare carichi di lavoro GKE su larga scala.
  • Riduci i costi con le macchine virtuali (VM) prerilasciabili. Se alcuni dei tuoi carichi di lavoro tollerano gli ambienti di runtime senza garanzie di disponibilità, valuta la possibilità di eseguire il deployment di questi carichi di lavoro in un pool di nodi composto da VM prerilasciabili. Le VM prerilasciabili hanno un prezzo inferiore rispetto alle VM di Compute Engine standard, il che ti permette di ridurre i costi dei tuoi cluster.
  • Integra GKE con altri prodotti. Alcuni prodotti Google Cloud possono integrarsi con GKE per rafforzare la sicurezza del tuo ambiente. Ad esempio, puoi analizzare i container per individuare le vulnerabilità o utilizzare immagini di base gestite in Container Registry.
  • Progetta i tuoi cluster GKE in modo che siano fungibili. Considerando i cluster come fungibili e automatizzando il provisioning e la configurazione, puoi semplificare e generalizzare i processi operativi per mantenerli e anche semplificare le migrazioni future e gli upgrade dei cluster GKE. Ad esempio, se devi eseguire l'upgrade di un cluster GKE fungibile a una nuova versione GKE, puoi eseguire automaticamente il provisioning e la configurazione di un nuovo cluster aggiornato, eseguire automaticamente il deployment dei carichi di lavoro nel nuovo cluster e dismettere il cluster GKE precedente e obsoleto.
  • Architettura di un ambiente multi-cluster. Implementando un ambiente multi-cluster su GKE, puoi:

    • Riduci le possibilità di introdurre single point of failure nell'architettura.
    • Sfrutta la maggiore flessibilità della possibilità di testare le modifiche alla configurazione su un sottoinsieme dei tuoi cluster GKE.
    • Distribuisci i carichi di lavoro tra i cluster GKE.

Sebbene tu possa soddisfare alcuni di questi requisiti di ottimizzazione in un ambiente Kubernetes, è più semplice in GKE, perché non devi sforzarti per mantenere il cluster in esecuzione. Potete invece concentrarvi sull'ottimizzazione stessa.

Completa l'ottimizzazione

Dopo aver compilato l'elenco dei requisiti di ottimizzazione, completa le altre attività della fase di ottimizzazione.

Passaggi successivi