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 di estensione: 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 ulteriori informazioni 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

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 il criterio 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

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 del criterio modificato.

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 \
      --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 \
      --description="DESCRIPTION"

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.
  • 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.

  • DESCRIPTION: una descrizione della policy di estensione VM.

Disinstallare 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.

Gestore di estensioni VM 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

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'agente Ops 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 è installata un'estensione 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 di base, riprova l'installazione utilizzando uno dei seguenti metodi:

    • Ricrea la policy: elimina la policy e poi creane una nuova.
    • Utilizza una policy temporanea ad alta priorità: 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 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