Applica nuove configurazioni delle VM in un MIG


Questa pagina spiega come configurare le istanze di macchine virtuali (VM) in un gruppo di istanze gestite (MIG) e i metodi che puoi utilizzare per applicare la configurazione alle VM esistenti nel gruppo.

Specifichi la configurazione prevista per le VM in un MIG utilizzando i seguenti componenti di configurazione delle VM:

  • Obbligatorio: modello di istanza
  • (Facoltativo) Configurazione di tutte le istanze
  • (Facoltativo) Configurazione stateful

Ogni volta che aggiorni la configurazione prevista utilizzando questi componenti, Compute Engine applica automaticamente la configurazione aggiornata alle nuove VM aggiunte al gruppo.

Per applicare una configurazione aggiornata alle VM esistenti, utilizza i metodi descritti in questa pagina:

  • Implementazioni automatiche con un budget di interruzione e aggiornamenti canary facoltativi di nuovi modelli
  • Aggiornamenti selettivi e manuali solo per VM specifiche, per ridurre al minimo le interruzioni
  • Ricreazione di VM specifiche

Puoi anche configurare il MIG in modo che applichi l'ultima configurazione disponibile alle VM durante le riparazioni. Per ulteriori informazioni, vedi Applica gli aggiornamenti della configurazione durante le riparazioni.

Se devi solo ridimensionare un MIG, consulta la documentazione su come aggiungere o rimuovere VM in un MIG. Se vuoi scoprire di più sulla configurazione delle funzionalità dei MIG, consulta la documentazione relativa a scalabilità automatica, riparazione automatica, bilanciamento del carico e carichi di lavoro stateful.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Componenti di configurazione per le VM in un MIG

Configura le VM in un MIG tramite i seguenti componenti:

ComponenteProprietàCaso d'uso
Modello di istanza Tipo di macchina, immagine del disco di avvio, etichette, script di avvio e altre proprietà della VM Obbligatorio: utilizza un modello di istanza per definire le proprietà dell'istanza obbligatorie e facoltative per tutte le VM del gruppo.

(Facoltativo) Se vuoi eseguire test canary su una seconda configurazione VM, puoi aggiungere un secondo modello di istanza al gruppo e applicarlo a un sottoinsieme delle VM nel gruppo.
Configurazione di tutte le istanze Etichette e metadati (Facoltativo) Utilizza una configurazione per tutte le istanze per eseguire rapidamente l'override delle proprietà del modello di istanza per tutte le VM del gruppo.
Configurazione stateful Dischi stateful, indirizzi IP e metadati (Facoltativo) Se devi supportare un carico di lavoro stateful, aggiungi la configurazione stateful alle VM nel gruppo.

Se aggiorni una configurazione per il gruppo tramite questi componenti, devi applicare la configurazione aggiornata alle VM esistenti nel gruppo per renderla effettiva.

Metodi per applicare una nuova configurazione alle VM esistenti

Dopo aver aggiornato la configurazione delle VM di un MIG, puoi applicare la nuova configurazione alle VM esistenti nel gruppo utilizzando i seguenti metodi:

  • Automatico (proattivo): utilizza questo metodo se vuoi che il MIG applichi automaticamente le nuove configurazioni a tutte le VM esistenti nel gruppo o a un sottoinsieme. Il livello di interruzione delle VM in esecuzione dipende dal criterio di aggiornamento che configuri. Puoi utilizzare questo metodo per l'aggiornamento canary di nuovi modelli di istanza. Per utilizzare questo metodo, imposta il tipo di aggiornamento del MIG su "proattivo".
  • Selettivo (opportunistico): utilizza questo metodo se vuoi applicare l'aggiornamento manualmente o se vuoi aggiornare tutte le VM esistenti nel gruppo contemporaneamente. Puoi scegliere come target una o tutte le VM da aggiornare alla configurazione più recente. Per utilizzare questo metodo, imposta il tipo di aggiornamento del MIG su "opportunistico".
  • Ricreazione delle VM: applica nuove configurazioni ricreando VM specifiche.

Per saperne di più sull'impostazione del tipo di aggiornamento di un MIG, consulta Configurare un aggiornamento proattivo o opportunistico.

Automatica (proattiva)

Un tipo di aggiornamento automatico è noto anche come tipo di aggiornamento proattivo. Quando imposti il tipo di aggiornamento del MIG su proattivo, il MIG applica automaticamente le configurazioni aggiornate alle VM in base alle necessità.

L'impostazione del tipo di aggiornamento del MIG su proattivo offre due vantaggi principali:

  • L'implementazione di un aggiornamento avviene automaticamente in base alle tue specifiche, senza la necessità di ulteriori input dopo la richiesta iniziale. Puoi specificare la velocità di deployment, il livello di interruzione del servizio e l'ambito dell'aggiornamento.
  • Puoi automatizzare i rollout parziali, il che consente di eseguire test canary.

Per scoprire come impostare il tipo di aggiornamento del MIG, consulta Configurare un aggiornamento proattivo o opportunistico.

Per ulteriori informazioni sui rollout automatici, consulta la sezione Applica automaticamente gli aggiornamenti alla configurazione della VM in un MIG.

Selettiva (opportunistica)

Un tipo di aggiornamento selettivo è noto anche come tipo di aggiornamento opportunistico. Quando imposti il tipo di aggiornamento del MIG su opportunistico, il MIG applica le nuove configurazioni alle VM esistenti solo quando scegli in modo selettivo le VM da aggiornare.

L'impostazione del tipo di aggiornamento del MIG su opportunistico offre i seguenti vantaggi:

  • Puoi selezionare le VM da aggiornare.
  • Puoi controllare la tempistica e la sequenza degli aggiornamenti.
  • Puoi utilizzare gcloud CLI o REST per aggiornare immediatamente tutte le istanze.

In alcuni scenari, un tipo di aggiornamento selettivo è utile perché non vuoi causare instabilità al sistema se è possibile evitarlo. Ad esempio, considera quanto segue:

  • Una delle VM nel MIG non funziona e deve essere riparata, ma non vuoi che la sua configurazione cambi. Se imposti il tipo di aggiornamento del MIG su opportunistico e non applichi forzatamente gli aggiornamenti durante le riparazioni, Compute Engine ripara la VM utilizzando la stessa configurazione utilizzata per creare la VM, anche se il modello di istanza originale non esiste più.

  • Hai un MIG con scalabilità automatica e vuoi applicare un aggiornamento non critico senza alcuna urgenza. Per assicurarti che Compute Engine non smantelli le VM esistenti per applicare l'aggiornamento, imposta il tipo di aggiornamento del MIG su opportunistico. Durante lo scale in, il gestore della scalabilità automatica termina preferibilmente le VM con la configurazione precedente. Quando il gruppo esegue lo scale out, crea VM con la configurazione più recente.

Per scoprire come impostare il tipo di aggiornamento del MIG, consulta Configurare un aggiornamento proattivo o opportunistico.

Per saperne di più sull'aggiornamento selettivo delle VM, consulta la pagina Applica in modo selettivo gli aggiornamenti della configurazione delle VM in un MIG.

Ricreazione delle VM

Puoi ricreare qualsiasi VM in un MIG. In questo caso, il MIG applica qualsiasi configurazione aggiornata che non è ancora stata applicata alla VM. Per saperne di più, consulta Ricreare le VM in un MIG.

Configurare un aggiornamento proattivo o opportunistico

Per applicare automaticamente le nuove configurazioni alle VM esistenti, imposta il tipo di aggiornamento del MIG su "proattivo". Per applicare nuove configurazioni alle VM esistenti solo quando selezioni una VM da aggiornare, imposta il tipo di aggiornamento del gruppo di istanze gestite su "opportunistico".

Utilizza la console Google Cloud , Google Cloud CLI o REST.

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai alla pagina Gruppi di istanze

  2. Seleziona il MIG che vuoi aggiornare.

  3. Nella parte superiore della pagina, fai clic su Aggiorna VM.

  4. Per impostare un modello diverso per il gruppo, seleziona il modello di istanza che vuoi utilizzare in Nuovo modello.

  5. In Aggiorna configurazione, scegli l'aggiornamento automatico o selettivo.

gcloud

Utilizza il comando rolling-action start-update e imposta il flag --type su opportunistic o proactive.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --type=TYPE

Puoi anche utilizzare il comando beta update e includere il flag --update-policy-type.

gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --update-policy-type=TYPE

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo
  • NEW_TEMPLATE: il nome del nuovo modello per il gruppo
  • TYPE: il tipo di aggiornamento, opportunistic o proactive

REST

Chiama il metodo patch su una risorsa MIG a livello di zona o di regione.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "TYPE" # Choose an opportunistic or proactive update
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
    }]
}

Sostituisci quanto segue:

  • PROJECT_ID: il progetto in cui esiste il MIG.
  • REGION: la regione in cui si trova il MIG. Per un MIG a livello di zona, sostituisci regions/REGION con zones/ZONE.
  • INSTANCE_GROUP_NAME: il nome del gruppo.
  • NEW_TEMPLATE: il nome del nuovo modello per il gruppo.
  • TYPE: il tipo di aggiornamento, OPPORTUNISTIC o PROACTIVE.

Per scoprire di più sull'impostazione di un nuovo modello e sulla sua applicazione alle VM nuove ed esistenti in un MIG, consulta le seguenti pagine:

Controllare il tipo di policy di aggiornamento del gruppo

Puoi visualizzare il tipo di criterio di aggiornamento attualmente configurato del tuo MIG ("opportunistico" o "proattivo") e altre impostazioni dei criteri di aggiornamento utilizzando gcloud CLI o REST.

gcloud

Utilizza il comando describe e includi il flag --format per elencare solo le impostazioni updatePolicy.

gcloud beta compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --format="(updatePolicy)"

REST

Invia una richiesta GET a un MIG a livello di zona o regionale e controlla il campo updatePolicy.

GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Per modificare il tipo di criterio, consulta Configurare un aggiornamento proattivo o opportunistico.

Aggiornamenti per le VM sospese e arrestate

Se hai sospeso e arrestato pool di VM in un MIG, puoi aggiornare in modo selettivo (opportunistico) le VM sospese o arrestate come aggiorni le altre VM in esecuzione. Se configuri gli aggiornamenti automatici (proattivi), il MIG aggiorna le VM nel seguente ordine:

  1. VM in esecuzione, sospese e arrestate
  2. VM con stato SUSPENDING o STOPPING

Per un aggiornamento automatico, il MIG calcola il picco massimo e il numero massimo di VM non disponibili in base al numero target di VM in esecuzione e non prende in considerazione le VM nel pool di standby.

Se l'aggiornamento automatico richiede la sostituzione delle VM nel gruppo, il MIG esegue le seguenti operazioni:

  1. Elimina le VM sospese e arrestate.
  2. Crea nuove VM con il nuovo modello di istanza.
  3. Esegue la procedura di inizializzazione.
  4. Sospende o arresta le VM.

Se l'aggiornamento automatico richiede solo l'aggiornamento o il riavvio delle VM nel gruppo, il MIG esegue le seguenti operazioni:

  1. Riprende o avvia le VM.
  2. Esegue l'aggiornamento sulle VM quando sono in esecuzione.
  3. Esegue la procedura di inizializzazione.
  4. Sospende o arresta le VM.

Aggiornamenti Canary

Se vuoi avviare aggiornamenti canary in un MIG con VM sospese o arrestate, si applica quanto segue:

  • Nella modalità di policy di standby manual, il MIG aggiorna solo le VM in esecuzione in base al numero o alla percentuale di VM a cui vuoi applicare l'aggiornamento. Le VM sospese e arrestate rimangono nelle versioni precedenti.
  • Nella modalità di policy di standby scale-out-pool, non puoi avviare un aggiornamento canary nel MIG.

Relazione tra i campi versions e instanceTemplate

Se utilizzi REST, ti consigliamo di utilizzare i campi instanceGroupManagers.versions e regionInstanceGroupManagers.versions per configurare i modelli di istanza per i MIG a livello di zona e di regione.

Il campo legacy instanceTemplate si sovrappone in termini di funzionalità al campo versions perché entrambi i campi consentono di specificare quale modello di istanza utilizza il gruppo di istanze gestite per creare le VM. Tuttavia, solo il campo versions ti consente di specificare una configurazione avanzata a due modelli (canary).

Per la compatibilità con le versioni precedenti, i gruppi di istanze gestite continuano a supportare l'impostazione del campo instanceTemplate di primo livello, anche se ti consigliamo di passare all'utilizzo del solo campo versions. L'utilizzo contemporaneo del campo instanceTemplate di primo livello e del campo versions può generare ambiguità e confusione.

Se specifichi sia il campo instanceTemplate sia il campo versions quando chiami il metodo update() o patch(), ci sono tre possibili risultati:

  • Hai impostato lo stesso valore per entrambi i campi.

    Questa è una richiesta valida. In questo caso, non crea ambiguità e il nuovo modello di istanza viene applicato al gruppo di istanze gestite.

    Ad esempio, nella seguente richiesta, il campo instanceTemplate di primo livello e il campo versions specificano lo stesso modello di istanza, diverso dal modello corrente esistente, quindi il MIG viene aggiornato al nuovo modello di istanza:

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Imposti entrambi i campi su valori che non corrispondono, ma solo un valore differisce dal modello di istanza corrente nel MIG.

    Questa è una richiesta valida. Il campo diverso dall'impostazione attuale viene considerato come valore previsto. Ad esempio, chiami il metodo update() e fornisci entrambi i campi, ma viene aggiornato solo un campo:

    {
     "instanceTemplate": "global/instanceTemplates/CURRENT_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Imposti entrambi i campi su valori che non corrispondono e entrambi i valori differiscono dal modello di istanza corrente nel MIG.

    Questa impostazione non è valida e restituisce un errore perché non è presente un intento chiaro.

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/A_DIFFERENT_NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    

Il campo versions, il campo instanceTemplate e il metodo get()

Se specifichi un solo modello di istanza, tramite il campo instanceTemplate di primo livello o tramite il campo versions o tramite entrambi, il metodo get() restituisce entrambi i campi nella risposta. In questo modo il nuovo campo versions è compatibile con le versioni precedenti. Se specifichi un modello di singola istanza in uno di questi campi, non viene modificato il valore restituito dal metodo get() nel campo instanceTemplate.

Se il campo versions ha specificato due modelli di istanza, il metodo get() restituisce un campo instanceTemplate di primo livello vuoto. Non è possibile esprimere in modo non ambiguo una configurazione di modello canary a due istanze nel campo instanceTemplate di primo livello, pertanto il campo non viene utilizzato durante un aggiornamento canary.

Il campo versions e il metodo setInstanceTemplate()

Per la compatibilità con le versioni precedenti, il metodo setInstanceTemplate() si comporta come in precedenza, consentendoti di modificare il modello utilizzato dal MIG per creare le VM. Quando chiami questo metodo, il campo versions viene sostituito con il modello di istanza specificato dal metodo setInstanceTemplate().

Il metodo setInstanceTemplate() imposta anche updatePolicy su OPPORTUNISTIC. In questo modo, il MIG non esegue il deployment attivo di un modello di istanza che non è specificato esplicitamente nel campo versions.

Passaggi successivi