Limita il tempo di esecuzione delle VM in un gruppo di istanze gestite

Questo documento descrive come terminare automaticamente le macchine virtuali (VM) in un gruppo di istanze gestite specificando un limite di tempo per le VM. Descrive anche il funzionamento del limite di tempo per le VM in un gruppo di istanze gestite.

Puoi ottimizzare i carichi di lavoro temporanei specificando un limite di tempo per le VM in un gruppo di istanze gestite. Quando una VM raggiunge il limite di tempo, il gruppo di istanze gestite termina automaticamente (elimina) la VM. Limitare il tempo di esecuzione delle VM in un gruppo di istanze gestite in base a un limite di tempo consente di ridurre al minimo i costi e liberare quota.

Per scoprire di più su come specificare un limite di tempo per una VM autonoma, consulta Limitare il tempo di esecuzione di una VM. Se vuoi che un gruppo di istanze gestite aggiunga o elimini automaticamente le VM in base ai tuoi carichi di lavoro, consulta Scalabilità automatica di gruppi di istanze.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    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. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    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, devi utilizzare le credenziali che fornisci a gcloud CLI.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.

Limita il tempo di esecuzione delle VM in un gruppo di istanze gestite

Puoi limitare il tempo di esecuzione delle VM in un gruppo di istanze gestite specificando un limite di tempo nel modello di istanza utilizzato per il gruppo di istanze gestite. Quando il gruppo di istanze gestite crea le VM in base al modello, viene applicato il limite di tempo a ogni VM.

Puoi specificare uno dei due tipi di limiti di tempo:

  • Limite di tempo come durata di esecuzione
  • Limite di tempo come tempo di risoluzione

Per specificare un limite di tempo per le VM in un gruppo di istanze gestite, segui questi passaggi:

  1. Crea un modello di istanza con una durata di esecuzione per le VM o con un tempo di terminazione per le VM.

  2. Utilizza il modello di istanza per creare un gruppo di istanze gestite o aggiornare un gruppo di istanze gestite esistente.

Limitazioni

  • Quando crei un modello di istanza per specificare un limite di tempo per le VM in un gruppo di istanze gestite, si applicano le seguenti limitazioni:

    • Non puoi impostare l'azione di risoluzione su STOP. I gruppi di istanze gestite supportano solo DELETE.
    • Non puoi utilizzare le VM spot.
  • Non puoi creare una richiesta di ridimensionamento in un gruppo di istanze gestite che utilizza un modello di istanza che limita il tempo di esecuzione delle VM.

  • Non puoi limitare il tempo di esecuzione delle VM in un gruppo di istanze gestite a livello di regione con forma di distribuzione di destinazione EVEN e ridistribuzione proattiva delle istanze abilitate.

Crea un modello di istanza con una durata di esecuzione per le VM

Per terminare automaticamente le VM in un gruppo di istanze gestite dopo che sono state eseguite per un determinato periodo di tempo, imposta una durata massima di esecuzione (maxRunDuration) nel modello di istanza.

Console

  1. Nella console Google Cloud, vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Fai clic su Crea modello istanza.

  3. Seleziona la Località come descritto di seguito:

    • Se vuoi utilizzare il modello di istanza in più regioni, scegli Globale.
    • Se vuoi ridurre la dipendenza tra regioni, scegli A livello di regione.
  4. Se hai scelto l'area geografica, seleziona la Regione in cui vuoi creare il modello di istanza.

  5. Nella sezione Criteri di disponibilità, espandi le impostazioni avanzate del modello di provisioning delle VM.

  6. Seleziona la casella di controllo Imposta un limite di tempo per la VM.

  7. Nel campo Tipo di limite di tempo, seleziona Per ore (impostazione predefinita) per specificare il limite di tempo come durata. Nel campo successivo, inserisci la durata in ore.

  8. Nell'elenco Alla terminazione della VM, seleziona Elimina.

  9. Per gli altri campi, accetta i valori predefiniti o modificali in base alle esigenze.

  10. Fai clic su Crea.

gcloud

Utilizza il comando instance-templates create beta. Per eliminare automaticamente le VM dopo un periodo di tempo specifico, includi il flag --max-run-duration e imposta il flag --instance-termination-action su DELETE come segue:

  gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --max-run-duration=DURATION \
      --instance-termination-action=DELETE

Sostituisci quanto segue:

  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.
  • DURATION: la durata di esecuzione delle VM. Il gruppo di istanze gestite elimina automaticamente la VM dopo la durata specificata.

    Formatta la durata come il numero di giorni, ore, minuti e secondi seguiti rispettivamente da d, h, m e s. Ad esempio, specifica 30m per una durata di 30 minuti o 1d2h3m4s per una durata di 1 giorno, 2 ore, 3 minuti e 4 secondi. La durata minima è di 30 secondi (30s) e la durata massima è di 120 giorni (120d).

REST

Utilizza il metodo instanceTemplates.insert beta. Per eliminare automaticamente le VM dopo un periodo di tempo specifico, includi il campo maxRunDuration e imposta il campo instanceTerminationAction su DELETE come segue:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "maxRunDuration":
      {
        "seconds": DURATION
      },
      "instanceTerminationAction": "DELETE"
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui vuoi creare il modello di istanza.
  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.
  • MACHINE_TYPE: il tipo di macchina predefinita o personalizzata per le VM nel gruppo.
  • IMAGE_PROJECT: il progetto di immagine che contiene l'immagine; ad esempio, debian-cloud.
  • IMAGE o IMAGE_FAMILY: specifica una delle seguenti opzioni:

    • IMAGE: una versione specifica dell'immagine del sistema operativo, ad esempio debian-10-buster-v20200309.

    • IMAGE_FAMILY: una famiglia di immagini. Specifica l'immagine del sistema operativo più recente non deprecata. Ad esempio, se specifichi family/debian-10, viene utilizzata l'ultima versione nella famiglia di immagini Debian 10.

  • DURATION: la durata di esecuzione delle VM. Il gruppo di istanze gestite elimina automaticamente la VM dopo la durata specificata.

    Formatta la durata come il numero di giorni, ore, minuti e secondi seguiti rispettivamente da d, h, m e s. Ad esempio, specifica 30m per una durata di 30 minuti o 1d2h3m4s per una durata di 1 giorno, 2 ore, 3 minuti e 4 secondi. La durata minima è di 30 secondi (30s) e la durata massima è di 120 giorni (120d).

Crea un modello di istanza con un tempo di terminazione per le VM

Per terminare automaticamente le VM in un gruppo di istanze gestite in un momento specifico, imposta un tempo di terminazione (terminationTime) nel modello di istanza. Puoi impostare la data e l'ora in cui vuoi che un gruppo di istanze gestite arresti le VM.

Console

  1. Nella console Google Cloud, vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Fai clic su Crea modello istanza.

  3. Seleziona la Località come descritto di seguito:

    • Se vuoi utilizzare il modello di istanza in più regioni, scegli Globale.
    • Se vuoi ridurre la dipendenza tra regioni, scegli A livello di regione.
  4. Se hai scelto l'area geografica, seleziona la Regione in cui vuoi creare il modello di istanza.

  5. Nella sezione Criteri di disponibilità, espandi le impostazioni avanzate del modello di provisioning delle VM.

  6. Nel campo Tipo di limite di tempo, seleziona Per data per specificare il limite di tempo come data e ora. Nel campo successivo, fai clic su Seleziona data e ora, quindi seleziona la data, l'ora e il fuso orario della terminazione automatica.

  7. Nell'elenco Alla terminazione della VM, seleziona Elimina.

  8. Per gli altri campi, accetta i valori predefiniti o modificali in base alle esigenze.

  9. Fai clic su Crea.

gcloud

Utilizza il comando instance-templates create beta. Per eliminare automaticamente le VM in un momento specifico, includi il flag --termination-time e imposta il flag --instance-termination-action su DELETE come segue:

  gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --termination-time=TIME \
      --instance-termination-action=DELETE

Sostituisci quanto segue:

  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.
  • TIME: l'ora in cui vuoi che questa VM venga terminata automaticamente. L'ora specificata deve essere successiva di almeno 30 secondi e non più di 120 giorni nel futuro. Formatta l'ora come timestamp RFC 3339:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Sostituisci quanto segue:

    • YYYY-MM-DD: una data formattata come anno a 4 cifre, mese a 2 cifre e giorno del mese a 2 cifre separate da trattini.
    • HH:MM:SS: un'ora formattata come ora a due cifre, con formato a 24 ore, minuti a due cifre e secondi a due cifre, separati da due punti.
    • OFFSET: il fuso orario formattato come differenza rispetto al fuso orario UTC (Coordinated Universal Time). Ad esempio, per utilizzare il fuso orario PST (Pacific Standard Time), che è 8 ore prima del fuso orario UTC, specifica -08:00. In alternativa, per non utilizzare offset (UTC+0), specifica Z.

REST

Utilizza il metodo instanceTemplates.insert beta. Per eliminare automaticamente le VM in un momento specifico, includi il campo terminationTime e imposta il campo instanceTerminationAction su DELETE come segue:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "terminationTime": TIME,
      "instanceTerminationAction": "DELETE"
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui vuoi creare il modello di istanza.
  • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.
  • MACHINE_TYPE: il tipo di macchina predefinita o personalizzata per le VM nel gruppo.
  • IMAGE_PROJECT: il progetto di immagine che contiene l'immagine; ad esempio, debian-cloud.
  • IMAGE o IMAGE_FAMILY: specifica una delle seguenti opzioni:

    • IMAGE: una versione specifica dell'immagine del sistema operativo, ad esempio debian-10-buster-v20200309.

    • IMAGE_FAMILY: una famiglia di immagini. Specifica l'immagine del sistema operativo più recente non deprecata. Ad esempio, se specifichi family/debian-10, viene utilizzata l'ultima versione nella famiglia di immagini Debian 10.

  • TIME: l'ora in cui vuoi che questa VM venga terminata automaticamente. L'ora specificata deve essere successiva di almeno 30 secondi e non più di 120 giorni nel futuro. Formatta l'ora come timestamp RFC 3339:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Sostituisci quanto segue:

    • YYYY-MM-DD: una data formattata come anno a 4 cifre, mese a 2 cifre e giorno del mese a 2 cifre separate da trattini.
    • HH:MM:SS: un'ora formattata come ora a due cifre, con formato a 24 ore, minuti a due cifre e secondi a due cifre, separati da due punti.
    • OFFSET: il fuso orario formattato come differenza rispetto al fuso orario UTC (Coordinated Universal Time). Ad esempio, per utilizzare il fuso orario PST (Pacific Standard Time), che è 8 ore prima del fuso orario UTC, specifica -08:00. In alternativa, per non utilizzare offset (UTC+0), specifica Z.

Come funziona il limite di tempo per le VM in un gruppo di istanze gestite

Quando specifichi un limite di tempo per le VM in un gruppo di istanze gestite, l'orario in cui il gruppo di istanze gestite termina una VM viene impostato automaticamente nel campo del timestamp di terminazione (terminationTimestamp) della VM.

In base al tipo di limite di tempo specificato, il timestamp di terminazione di una VM è impostato come segue:

  • Limite di tempo come durata di esecuzione (maxRunDuration):

    terminationTimestamp di una VM = ultima creazione o ora di inizio della VM + maxRunDuration

    Quando specifichi una durata, il timestamp di terminazione viene impostato in base all'ultima creazione o all'ora di inizio della VM. Se la VM viene ricreata, riavviata, ripresa o sostituita, il timestamp di terminazione viene ricalcolato. Il timestamp di terminazione può variare tra le VM in un gruppo di istanze gestite in base all'ora in cui ogni VM è stata creata o avviata l'ultima volta. Ad esempio, se una VM viene riparata, il timestamp di terminazione della VM viene ricalcolato aggiungendo la durata al momento in cui la VM è stata ricreata durante la riparazione.

  • Limite di tempo come tempo di risoluzione (terminationTime):

    terminationTimestamp di una VM = terminationTime

    Quando specifichi un orario, il timestamp di risoluzione viene impostato su quell'ora, a condizione che sia nel futuro. Se il tempo di terminazione è trascorso, qualsiasi azione di gruppo di istanze gestite che tenta di creare, riavviare o sostituire una VM ha esito negativo e restituisce un errore. Per risolvere questo errore, devi creare un nuovo modello di istanza con un'ora di terminazione nel futuro e applicare questo modello al gruppo di istanze gestite. Se vuoi utilizzare le proprietà del modello esistenti nel nuovo modello, crea un modello di istanza basato sul modello esistente.

Durante un aggiornamento di una VM, il timestamp di terminazione non cambia. Ad esempio, se imposti il livello di interruzione per gli aggiornamenti su REFRESH, il timestamp di terminazione viene conservato ogni volta che il gruppo di istanze gestite aggiorna la VM.

Quando sospendi o interrompi una VM in un gruppo di istanze gestite, il timestamp di terminazione viene cancellato automaticamente indipendentemente dal tipo di limite di tempo. Quando riprendi o avvii una VM, il timestamp di terminazione viene impostato di nuovo in base al tipo di limite di tempo, come spiegato in precedenza in questa sezione.

Come funziona la scalabilità automatica quando è impostato un limite di tempo

La scalabilità automatica consente al gruppo di istanze gestite di aggiungere o rimuovere automaticamente le VM in base agli aumenti o alle riduzioni del carico. Quando un gruppo di istanze gestite elimina le VM che hanno raggiunto i timestamp di terminazione, ne crea di nuove per mantenere le dimensioni consigliate dal gestore della scalabilità automatica. Le nuove VM vengono eseguite per il limite di tempo specificato. Se il gestore della scalabilità automatica consiglia di ridurre il numero di VM, il gruppo di istanze gestite elimina le VM anche prima che raggiungano i limiti di tempo.

Se hai configurato le pianificazioni di scalabilità, le VM vengono eseguite solo fino alla fine di una pianificazione o fino a quando una VM non raggiunge il timestamp di terminazione, a seconda dell'evento che si verifica per primo.

Passaggi successivi