Gestire le estensioni VM utilizzando le relative policy

VM Extension Manager utilizza le policy di estensione per gestire le estensioni VM su larga scala. Per ulteriori informazioni, consulta Informazioni su VM Extension Manager. Questo documento descrive come visualizzare, aggiornare ed eliminare le policy di estensione VM.

Ruoli e autorizzazioni IAM

Per ottenere le autorizzazioni necessarie per visualizzare, modificare ed eliminare le policy di estensione VM, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per visualizzare, modificare ed eliminare le policy delle estensioni VM. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per visualizzare, modificare ed eliminare le policy di estensione VM sono necessarie le seguenti autorizzazioni:

  • Per visualizzare le policy di estensione: compute.vmExtensionPolicies.list
  • Per visualizzare i dettagli di una policy di estensione: compute.vmExtensionPolicies.get
  • Per modificare le policy delle estensioni: compute.vmExtensionPolicies.update
  • Per eliminare le policy di estensione: compute.vmExtensionPolicies.delete

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più sui ruoli e le autorizzazioni IAM in Compute Engine, consulta Ruoli e autorizzazioni di Compute Engine.

Visualizzare le policy delle estensioni

Puoi visualizzare un elenco delle policy di estensione VM nel tuo progetto o i dettagli di una policy specifica utilizzando la console Google Cloud o Google Cloud CLI.

Console

  1. Nella console Google Cloud , vai alla pagina Policy delle estensioni VM.

    Vai a Policy di estensione VM

    Questa pagina elenca tutte le policy di estensione VM nel progetto.
  2. Per visualizzare i dettagli di una policy di estensione specifica, fai clic sul nome della policy.

gcloud

Globale

Per visualizzare tutte le policy di estensione globali in un progetto, utilizza il comando gcloud beta compute global-vm-extension-policies list:

gcloud beta compute global-vm-extension-policies list \
  --project=PROJECT_ID \
  --page-size=PAGE_SIZE

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • PAGE_SIZE: il numero massimo di risultati da restituire per pagina.

Per visualizzare i dettagli di una specifica policy di estensione globale, utilizza il comando gcloud beta compute global-vm-extension-policies describe:

gcloud beta compute global-vm-extension-policies describe POLICY_NAME \
  --project=PROJECT_ID

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di estensione VM che vuoi descrivere.
  • PROJECT_ID: il tuo ID progetto Google Cloud .

A livello di zona

Per visualizzare tutte le policy di estensione in un progetto, utilizza il comando gcloud beta compute zone-vm-extension-policies list:

gcloud beta compute zone-vm-extension-policies list \
  --project=PROJECT_ID \
  --zone=ZONE \
  --page-size=PAGE_SIZE

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • ZONE: il nome della zona in cui vuoi elencare i criteri delle estensioni VM.
  • PAGE_SIZE: il numero massimo di risultati da restituire per pagina.

Per visualizzare i dettagli di una policy di estensione specifica, utilizza il comando gcloud beta compute zone-vm-extension-policies describe:

gcloud beta compute zone-vm-extension-policies describe POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di estensione VM che vuoi descrivere.
  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • ZONE: la Google Cloud zona in cui si trova la policy di estensione VM.

Modificare le estensioni aggiornando una policy di estensione VM

Quando aggiorni una policy, VM Extension Manager implementa le modifiche a tutte le VM applicabili, in genere entro un minuto. Se modifichi le etichette di inclusione, le estensioni potrebbero essere installate su nuove VM o disinstallate da VM esistenti a seconda che corrispondano alle etichette aggiornate.

Console

  1. Nella console Google Cloud , vai alla pagina Policy delle estensioni VM.

    Vai a Policy di estensione VM

  2. Seleziona il criterio che vuoi aggiornare.
  3. Fai clic su Modifica.
  4. Modifica Descrizione, Priorità, Estensioni o Istanze VM di destinazione.
  5. Fai clic su Salva.

gcloud

Globale

Utilizza il comando gcloud beta compute global-vm-extension-policies update per modificare una policy di estensione delle VM globale esistente. Quando aggiorni una norma utilizzando gcloud, la richiesta funge da sostituzione completa. I campi facoltativi che ometti vengono ripristinati ai valori predefiniti anziché mantenere i valori esistenti del criterio modificato.

Per aggiornare una policy di estensione VM globale, esegui questo comando:

  gcloud beta compute global-vm-extension-policies update POLICY_NAME \
      --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
      --description="DESCRIPTION" \
      --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
      --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
      --inclusion-labels=KEY_1=VALUE_1 \
      --priority=PRIORITY_NUMBER \
      --rollout-predefined-plan=ROLLOUT_PLAN \
      --rollout-retry-uuid=RETRY_UUID \
      --rollout-conflict-behavior=ROLLOUT_CONFLICT_BEHAVIOR

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di estensione VM da aggiornare.
  • EXTENSION_NAME_1, EXTENSION_NAME_2: i nomi delle estensioni da aggiornare. Devi specificare almeno un'estensione.
  • DESCRIPTION: una descrizione della policy di estensione VM.
  • VERSION_1: la versione della prima estensione VM.
  • VERSION_2: la versione della seconda estensione VM.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: un elenco separato da virgole di coppie chiave-valore in cui la chiave è il nome dell'estensione e il valore è il percorso del file di configurazione per quell'estensione. Questo percorso si trova sulla VM in cui esegui il comando gcloud, non sulla VM in cui installi l'estensione.

    In alternativa, per fornire la configurazione come stringa incorporata, utilizza il flag --config anziché --config-from-file, ad esempio EXTENSION_NAME_1="CONFIG_1". Puoi utilizzare --config-from-file o --config, ma non entrambi nello stesso comando.

  • KEY_1=VALUE_1: un elenco separato da virgole di coppie chiave-valore che definiscono le etichette di inclusione per un selettore. Le VM devono avere tutte le etichette specificate in un selettore per essere prese di mira. Se specifichi --inclusion-labels più volte, la policy ha come target le VM che corrispondono a uno qualsiasi dei selettori forniti (operatore logico OR). Se ometti questo flag, la policy ha come target tutte le VM in tutte le zone del progetto.

  • PRIORITY_NUMBER: il numero di priorità per la policy di estensione VM.

  • ROLLOUT_PLAN: specifica slow_rollout o fast_rollout. Se devi utilizzare un piano di implementazione personalizzato, utilizza il flag --rollout-custom-plan invece di --rollout-predefined-plan e specifica il nome del piano, ad esempio:

    --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: Il progetto in cui è definito il piano di implementazione.
    • ROLLOUT_PLAN_NAME: il nome del piano di implementazione personalizzato che hai definito.

    Se non viene specificato alcun flag del piano di implementazione, viene utilizzato slow_rollout.

  • ROLLOUT_CONFLICT_BEHAVIOR: specifica il comportamento quando viene rilevato un conflitto tra una norma zonale e una globale. I valori possibili sono:

    • "" (stringa vuota): viene utilizzato il valore del criterio zonale.
    • overwrite: La policy globale sovrascrive la policy di zona.

    Per maggiori dettagli, vedi il flag --rollout-conflict-behavior.

  • RETRY_UUID: un UUID che identifica un tentativo di ripetizione per l'implementazione di un aggiornamento delle policy. Consente di riprovare un aggiornamento senza modifiche. Si verifica un errore se imposti questo flag e la policy viene modificata. Per saperne di più, consulta Riprovare un'implementazione.

A livello di zona

Utilizza il comando gcloud beta compute zone-vm-extension-policies update per modificare una policy di estensione VM esistente. Quando aggiorni una norma utilizzando gcloud, la richiesta funge da sostituzione completa. I campi facoltativi omessi vengono ripristinati ai valori predefiniti anziché conservare i valori esistenti della policy modificata.

Per aggiornare una policy di estensione VM, esegui questo comando:

  gcloud beta compute zone-vm-extension-policies update POLICY_NAME \
      --zone=ZONE \
      --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
      --description="DESCRIPTION" \
      --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
      --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
      --inclusion-labels=KEY_1=VALUE_1 \
      --priority=PRIORITY_NUMBER

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di estensione VM da aggiornare.
  • ZONE: la Google Cloud zona in cui si applica la policy.
  • EXTENSION_NAME_1, EXTENSION_NAME_2: i nomi delle estensioni da aggiornare. Devi specificare almeno un'estensione.
  • DESCRIPTION: una descrizione facoltativa per la policy di estensione VM.
  • VERSION_1: la versione della prima estensione VM.
  • VERSION_2: la versione della seconda estensione VM.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: un elenco separato da virgole di coppie chiave-valore in cui la chiave è il nome dell'estensione e il valore è il percorso del file di configurazione per quell'estensione. Questo percorso si trova sulla VM in cui esegui il comando gcloud, non sulla VM in cui installi l'estensione.

    In alternativa, per fornire la configurazione come stringa incorporata, utilizza il flag --config anziché --config-from-file, ad esempio EXTENSION_NAME_1="CONFIG_1". Puoi utilizzare --config-from-file o --config, ma non entrambi nello stesso comando.

  • KEY_1=VALUE_1: un elenco separato da virgole di coppie chiave-valore che definiscono le etichette di inclusione per un selettore. Le VM devono avere tutte le etichette specificate in un selettore per essere prese di mira. Se specifichi --inclusion-labels più volte, la policy ha come target le VM che corrispondono a uno qualsiasi dei selettori forniti (operatore logico OR). Se ometti questo flag, la policy ha come target tutte le VM nella zona specificata.

  • PRIORITY_NUMBER: il numero di priorità per la policy di estensione VM.

Disinstalla le estensioni eliminando una policy di estensione VM

Quando elimini una policy, il gestore di estensioni VM disinstalla le estensioni da tutte le VM gestite da quella policy. Tuttavia, se un'altra policy attiva con priorità inferiore si applica a una VM e dichiara la stessa estensione, l'estensione rimane installata su quella VM in base alla policy con priorità inferiore.

VM Extension Manager rimuove le estensioni da tutte le VM accessibili entro un minuto dall'eliminazione della policy. Se una VM è inaccessibile perché l'agente guest è stato rimosso o la VM è stata eliminata, VM Extension Manager salta l'eliminazione dell'estensione. Se una VM di questo tipo torna disponibile, VM Extension Manager rimuove le estensioni in quel momento.

Console

  1. Nella console Google Cloud , vai alla pagina Policy delle estensioni VM.

    Vai a Policy di estensione VM

  2. Seleziona la policy che vuoi eliminare.
  3. Fai clic su Elimina.
  4. Nella finestra di dialogo di conferma, fai clic su Elimina.

gcloud

Globale

Utilizza il comando gcloud beta compute global-vm-extension-policies delete per eliminare una policy di estensione VM globale esistente.

gcloud beta compute global-vm-extension-policies delete POLICY_NAME \
  --project=PROJECT_ID \
  --rollout-predefined-plan=ROLLOUT_PLAN \
  --rollout-retry-uuid=RETRY_UUID

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di estensione VM che vuoi eliminare.
  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • ROLLOUT_PLAN: specifica slow_rollout o fast_rollout. Se devi utilizzare un piano di implementazione personalizzato, utilizza il flag --rollout-custom-plan invece di --rollout-predefined-plan e specifica il nome del piano, ad esempio:

    --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: Il progetto in cui è definito il piano di implementazione.
    • ROLLOUT_PLAN_NAME: il nome del piano di implementazione personalizzato che hai definito.

    Se non viene specificato alcun flag del piano di implementazione, viene utilizzato slow_rollout.

  • RETRY_UUID: Un UUID per riprovare a eliminare una policy di estensione. Imposta questo campo solo quando ritenti una richiesta di eliminazione per un criterio esistente nello stato DELETING. L'impostazione di questo campo quando il criterio non è nello stato DELETING causa un errore. Per saperne di più, consulta Riprovare un'implementazione.

A livello di zona

Utilizza il comando gcloud beta compute zone-vm-extension-policies delete per eliminare una policy di estensione VM esistente.

gcloud beta compute zone-vm-extension-policies delete POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Sostituisci quanto segue:

  • POLICY_NAME: il nome della policy di estensione VM che vuoi eliminare.
  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • ZONE: la Google Cloud zona in cui si trova la policy.

Risolvi i problemi relativi alle estensioni VM

Questa sezione descrive come risolvere i problemi relativi alle estensioni VM.

Verificare che un'estensione sia installata

Puoi verificare che un'estensione sia installata controllando quanto segue sulla VM:

  • Connettiti alla VM e controlla i processi in esecuzione.

    La tabella seguente elenca i nomi dei processi per ogni estensione:

    Nome estensione Nome del processo di estensione
    google-cloud-sap-extension google_cloud_sap_agent
    google-cloud-workload-extension google_cloud_workload_agent
    ops-agent ops-agent

    Linux

    ps aux | grep 'EXTENSION_PROCESS_NAME'
    Sostituisci EXTENSION_PROCESS_NAME con il nome del processo dell'estensione. Ad esempio, per controllare il processo Ops Agent, esegui questo comando:
    ps aux | grep 'ops-agent'

    Windows

    tasklist | findstr "EXTENSION_PROCESS_NAME"
    Sostituisci EXTENSION_PROCESS_NAME con il nome del processo dell'estensione. Ad esempio, per controllare il processo Ops Agent, esegui questo comando:
    tasklist | findstr "ops-agent"

    L'output del comando ps su una VM Linux per l'Ops Agent potrebbe mostrare una voce simile alla seguente:

    ....
    /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3
    ....
  • Abilitare e rivedere i log dell'agente ospite. I log dell'agente ospite mostrano quando un'estensione viene installata e avviata.

    Di seguito è riportato un esempio dell'output che potresti visualizzare nei log dell'agente guest quando viene installata un'estensione di Ops Agent:

    my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]]
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-centrall-a/ops-agent
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87)
    my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"

Risolvere i problemi di installazione

Se un'estensione non viene installata su una VM dopo la creazione di una policy, segui questi passaggi per risolvere il problema:

  1. Attendi l'applicazione delle norme. L'applicazione di un criterio, inclusi eventuali tentativi, può richiedere fino a un'ora.
  2. Verifica che le etichette di inclusione specificate nella policy corrispondano a quelle della VM.
  3. Per identificare potenziali errori di installazione, attiva il logging di debug per l'agente guest.
  4. Dopo aver risolto il problema sottostante, riprova l'installazione utilizzando uno dei seguenti metodi:

    • Ricrea la policy: elimina la policy e poi creane una nuova.
    • Utilizza una policy temporanea a priorità elevata: se vuoi evitare di ricreare una policy che interessa molte VM, utilizza una policy temporanea a priorità più elevata per riprovare l'installazione su VM specifiche:

      1. Aggiungi una nuova etichetta alle VM per cui l'installazione non è riuscita. Ad esempio, aggiungi un'etichetta status=failed.
      2. Crea una policy con una priorità più alta che abbia come target la nuova etichetta. Ad esempio, se la policy originale non riuscita aveva la priorità predefinita di 1000, crea una policy con una priorità più alta, ad esempio 500.
        gcloud beta compute zone-vm-extension-policies create temp-policy  
        --project=test-project
        --zone=us-central1-f
        --extensions=ops-agent
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml"
        --priority=500
        --inclusion-labels=status=failed
      3. Dopo aver installato correttamente l'estensione, elimina la policy temporanea e rimuovi l'etichetta dalle VM. L'estensione rimane installata perché le norme originali sono ancora attive.

Visualizzare i log di debug per l'agente ospite

Per attivare il logging di debug, aggiungi le impostazioni di livello e verbosità del log alla sezione Core del file di configurazione dell'agente guest nel seguente modo:

Linux

  1. Apri il file di configurazione dell'agente guest che si trova in /etc/default/instance_configs.cfg.
  2. Aggiungi le seguenti righe al file. Se la sezione [Core] esiste già, aggiungi le impostazioni log_level e log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Riavvia il gestore dell'agente guest eseguendo questo comando:

     sudo systemctl restart google-guest-agent-manager
    
  4. Per visualizzare i log dell'attività dell'agente guest durante l'installazione dell'estensione, esegui questo comando:

    journalctl -u google-guest-agent-manager
    

Windows

  1. Apri il file di configurazione dell'agente guest che si trova in C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. Aggiungi le seguenti righe al file. Se la sezione [Core] esiste già, aggiungi le impostazioni log_level e log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Riavvia il gestore dell'agente guest eseguendo questo comando come amministratore di Windows:

     net stop GCEAgentManager
     net start GCEAgentManager
    
  4. Per visualizzare i log dell'attività dell'agente guest durante l'installazione dell'estensione, esegui questo comando in PowerShell:

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Dopo aver attivato i log di debug, verifica la presenza dei seguenti errori comuni:

  • Spazio su disco insufficiente: se i log segnalano spazio su disco insufficiente, libera spazio sul disco o ridimensionalo per aggiungere altro spazio.
  • Utilizzo eccessivo delle risorse: se i log indicano che l'agente guest ha interrotto l'estensione a causa dell'utilizzo eccessivo di memoria o CPU, modifica il tipo di macchina della VM in uno con più risorse.

Passaggi successivi