Funzionalità dell'agente ospite


Questo documento fornisce una panoramica della funzionalità di base dell'agente guest, un componente fondamentale dell'ambiente guest. L'ambiente guest contiene script, daemon e file binari necessari alle istanze per essere eseguite su Compute Engine. Per saperne di più, consulta Ambiente guest.

Come funziona l'agente ospite

A partire dalla versione 20250901.00, l'agente ospite utilizza un'architettura basata su plug-in. Questo design migliora l'affidabilità e la flessibilità separando le funzioni dell'agente in componenti distinti.

L'architettura dell'agente guest è costituita da alcuni componenti chiave:

  • Gestore agenti ospiti: il processo centrale dell'istanza che avvia, arresta e monitora tutti i plug-in.
  • Plug-in principale: questo plug-in gestisce i servizi essenziali necessari per l'esecuzione della tua istanza su Google Cloud. La sua funzionalità non può essere disattivata.
  • Plug-in facoltativi: questi plug-in integrano l'istanza con altri Google Cloud servizi, come Cloud Monitoring. Puoi controllare quali di questi plug-in vengono eseguiti sulla tua istanza.
  • Control plane dell'agente: si tratta di un servizio Google Cloud gestito che viene eseguito sull'infrastruttura di backend di Google e gestisce il ciclo di vita dei plug-in facoltativi, inclusi installazione e aggiornamenti.

Per saperne di più sull'architettura dell'agente guest, consulta Informazioni sull'agente guest.

Funzionalità di base

Il plug-in principale è responsabile dei servizi fondamentali necessari all'istanza per funzionare su Compute Engine. La sezione seguente descrive in dettaglio le funzioni fornite dal plug-in principale. Puoi personalizzare molte di queste funzionalità utilizzando il file di configurazione dell'agente ospite.

Configurazione iniziale dell'istanza e ottimizzazioni

L'agente guest esegue diverse attività di configurazione per preparare l'istanza all'esecuzione su Compute Engine. Come mostrato nella tabella seguente, alcune attività vengono eseguite solo al primo avvio, mentre altre vengono eseguite a ogni avvio.

Attività Frequenza
Generare chiavi host SSH Al primo avvio
Crea la configurazione boto per l'utilizzo di Cloud Storage Al primo avvio
Ottimizza per l'SSD locale A ogni avvio
Attiva la multi-coda su tutti i dispositivi virtionet A ogni avvio

Puoi controllare queste attività di configurazione configurando le opzioni InstanceSetup del file di configurazione dell'agente guest. Ad esempio, puoi disattivare l'ottimizzazione dell'SSD locale impostando optimize_local_ssd = false.

Raccolta della telemetria di sistema

L'agente ospite registra alcune informazioni di telemetria di base del sistema all'avvio e poi una volta ogni 24 ore. Le informazioni registrate includono quanto segue:

  • Versione e architettura dell'agente ospite
  • Nome e versione del sistema operativo
  • Versione e rilascio del kernel del sistema operativo

Puoi disattivare la raccolta di dati di telemetria impostando la chiave dei metadati disable-guest-telemetry su true. Per impostare i metadati, consulta Imposta e rimuovi i metadati personalizzati.

Sincronizzazione dell'orologio (solo Linux)

Per garantire una registrazione accurata del tempo, l'agente guest utilizza il componente clock_skew_daemon per correggere periodicamente l'orologio dell'istanza in modo che corrisponda a quello del server fisico su cui viene eseguito. Questo processo impedisce un problema chiamato clock skew e genera un messaggio system time has changed nei log dell'istanza, che conferma che l'ora è stata sincronizzata correttamente.

L'agente sincronizza normalmente l'orologio dopo un evento di interruzione o avvio oppure dopo una migrazione.

Puoi disattivare il componente clock_skew_daemon impostando clock_skew_daemon = false nel file di configurazione dell'agente ospite.

Esecuzione dello script dei metadati

Puoi utilizzare gli script di avvio e gli script di arresto per eseguire attività automatiche ogni volta che l'istanza si avvia o si arresta.

L'agente guest aiuta a eseguire questi script nel seguente modo:

  • Esegue script in una shell.
  • Se specifichi più script (ad esempio, se utilizzi sia startup-script che startup-script-url), l'agente li esegue entrambi.
  • Quando vengono forniti più script per lo stesso evento, l'agente esegue prima lo script dall'URL.
  • Al termine di uno script, l'agente registra il relativo stato di uscita.

Puoi configurare l'esecuzione degli script di metadati modificando le opzioni MetadataScripts nel file di configurazione dell'agente guest.

Gestione dell'account utente e delle chiavi SSH

L'agente guest utilizza un accounts_daemon per gestire gli account utente locali e le chiavi SSH, che controllano l'accesso all'istanza. Il comportamento specifico varia a seconda dei sistemi operativi Linux e Windows.

Puoi modificare le opzioni di gestione degli account configurando le opzioni Accounts nel file di configurazione dell'agente guest.

Linux

OS Login viene utilizzato per gestire l'accesso SSH alle istanze utilizzando IAM senza dover creare e gestire singole chiavi SSH. Per saperne di più su OS Login, consulta OS Login. Sulle istanze Linux, se OS Login non è abilitato, l'agente crea e gestisce gli account utente locali e le relative chiavi SSH utilizzando le impostazioni dei metadati.

Quando aggiungi o rimuovi chiavi SSH dai metadati dell'istanza o del progetto, l'agente guest crea o elimina un account utente locale. L'agente guest esegue anche le seguenti azioni per gestire questi account utente locali:

  • Gestisce il file authorized_keys per ogni account utente gestito come segue:
    • Quando aggiungi chiavi SSH ai metadati, l'agente crea un file authorized_keys per l'account utente.
    • Quando rimuovi tutte le chiavi SSH per un utente dai metadati, l'agente elimina il file authorized_keys dell'account utente.
  • Gestisce i privilegi di amministratore utilizzando il gruppo Linux google-sudoers. Tutti i membri di questo gruppo ricevono le autorizzazioni sudo sull'istanza.
  • Aggiunge tutti gli account utente di cui esegue il provisioning al gruppo google-sudoers.
  • Aggiunge account utente a eventuali gruppi Linux aggiuntivi specificati nell'opzione groups del file di configurazione dell'agente guest.

Windows

Sulle istanze Windows, l'agente crea automaticamente account utente locali per qualsiasi account utente SSH specificato nelle chiavi SSH dei metadati a livello di istanza o progetto. L'agente ospite si occupa anche di creare account utente e impostare o reimpostare le password. Questi account utente locali sono necessari per connettersi alle istanze Windows utilizzando SSH.

Puoi impedire il provisioning involontario degli utenti AD disattivando Account Manager nell'istanza del controller AD. Per ulteriori informazioni sulla configurazione di AD su Compute Engine, consulta Eseguire il deployment dei controller di dominio.

Configurazione di OS Login (solo Linux)

OS Login viene utilizzato per gestire l'accesso SSH alle istanze utilizzando IAM senza dover creare e gestire singole chiavi SSH. Per ulteriori informazioni su OS Login, consulta la documentazione di OS Login.

Quando attivi OS Login, l'agente guest è responsabile della configurazione dell'istanza per l'utilizzo di OS Login.

L'agente guest configura OS Login completando le seguenti attività:

  • Aggiunge un blocco di configurazione Google al file di configurazione SSHD e riavvia SSHD.
  • Aggiunge voci OS Login al file nsswitch.conf.
  • Aggiunge voci OS Login al file di configurazione PAM per SSHD.

Se disattivi OS Login, le modifiche alla configurazione vengono rimosse. Le opzioni nella sezione Accounts del file di configurazione SSHD non si applicano agli utenti di OS Login.

Gestione reti

L'agente guest configura automaticamente le interfacce di rete dell'istanza all'avvio. Legge la configurazione di rete dal server metadati per garantire che la tua istanza si connetta correttamente alla rete e possa accedere ad altri servizi Google Cloud.

Puoi controllare il comportamento di gestione della rete dell'agente configurando le opzioni NetworkInterfaces nel file di configurazione dell'agente guest. Ad esempio, puoi impostare l'opzione manage_primary_nic = true in modo che l'agente gestisca la scheda di interfaccia di rete (NIC) principale oltre alle NIC secondarie.

A ogni avvio, l'agente guest esegue le seguenti attività chiave:

  • Attiva le interfacce di rete: l'agente rileva il gestore di rete attivo sul tuo sistema operativo e lo utilizza per attivare tutte le NIC di rete secondarie.
  • Configura le route IP: l'agente configura le route IP (solo IPv4) necessarie per funzionalità come l'inoltro IP e gli intervalli IP alias nel seguente modo:
    • Imposta le route sull'interfaccia Ethernet principale.
    • Configura le route Google per impostazione predefinita, con l'ID protocollo di routing 66. Questo ID è uno spazio dei nomi per gli indirizzi IP configurati dell'agente guest. Questo ID può essere modificato utilizzando l'opzione ethernet_proto_id nel file di configurazione dell'agente guest.
  • Crea una route al server dei metadati: l'agente garantisce che la NIC principale possa sempre comunicare con il server dei metadati per ottenere informazioni sull'istanza.
  • Configurazione VLAN: se la tua istanza è configurata per connettersi a una Virtual Local Area Network (VLAN), l'agente guest gestisce automaticamente la configurazione. Legge la configurazione VLAN dal server metadati e configura l'interfaccia di rete all'interno dell'istanza per utilizzare il tag VLAN corretto. In questo modo, l'istanza comunica sulla rete logica prevista. È importante sottolineare che se la VLAN è collegata alla NIC principale, l'agente guest la configura anche se manage_primary_nic è disattivato.

Selezione del network manager

Su Linux, l'agente guest rileva automaticamente quale gestore di rete è disponibile sul sistema e lo utilizza per configurare le interfacce di rete. L'agente verifica la presenza di gestori supportati in ordine di priorità, da netplan a dhclient.

La tabella seguente elenca i gestori di rete supportati, organizzati in base al sistema operativo a cui sono associati più comunemente per impostazione predefinita. La configurazione specifica dell'istanza può variare, ma questa tabella riflette il gestore di rete predefinito per i sistemi operativi elencati.

Network manager Sistema operativo Posizione della configurazione Esempio di percorso Note
netplan
  • Debian 12 o versioni successive
  • Ubuntu 20.04 o versioni successive
/run/netplan/ /run/netplan/20-google-guest-agent-eth0.yaml L'agente può anche utilizzare una sede di consegna presso /etc/systemd/network/
wicked
  • SLES
/etc/sysconfig/network/ /etc/sysconfig/network/ifcfg-eth0 I file ifcfg esistenti non vengono sovrascritti e vengono ignorati.
NetworkManager
  • CentOS
  • RHEL
  • Rocky Linux
/etc/NetworkManager/system-connections/ /etc/NetworkManager/system-connections/google-guest-agent-eth0.nmconnection
systemd-networkd
  • Debian
/usr/lib/systemd/network/ /usr/lib/systemd/network/20-eth0-google-guest-agent.network
dhclient
  • Debian 11 o versioni precedenti
  • Ubuntu 18.04 o versioni precedenti
/run/ /run/dhclient.google-guest-agent.eth0.ipv4.pid Se non viene rilevato nessun altro gestore di rete, l'agente ospite utilizza per impostazione predefinita dhclient.

Gestione sicura delle credenziali del server di metadati (MDS)

Le VM schermate ora supportano la comunicazione sicura con il server di metadati utilizzando l'endpoint HTTPS https://metadata.google.internal/computeMetadata/v1. Questo miglioramento fornisce un canale più sicuro per l'accesso ai metadati.

Per attivare questa comunicazione sicura, l'agente guest recupera e archivia le credenziali necessarie sul disco dell'istanza. Queste credenziali vengono salvate in una posizione standard, il che le rende accessibili a qualsiasi applicazione client in esecuzione sull'istanza. Per esaminare queste posizioni, consulta Dove sono archiviati i certificati.

La configurazione dei certificati HTTPS MDS è disattivata per impostazione predefinita. Per fare in modo che le VM schermate configurino automaticamente i certificati HTTPS MDS, imposta la chiave di metadati disable-https-mds-setup su false nell'istanza o nel progetto. Per impostare i metadati, consulta Imposta e rimuovi i metadati personalizzati.

La gestione delle credenziali da parte dell'agente guest include:

  • Aggiornamento iniziale: sia il certificato radice sia le credenziali client vengono aggiornati ogni volta che viene avviato il processo dell'agente guest.
  • Aggiornamento automatico: per una maggiore sicurezza, l'agente ospite aggiorna automaticamente le credenziali del client ogni 48 ore.
  • Periodo di sovrapposizione: l'agente genera e salva nuove credenziali mentre quelle precedenti rimangono valide. Il periodo di sovrapposizione garantisce ai clienti un tempo sufficiente per passare alle nuove credenziali prima della scadenza di quelle precedenti. Questo periodo di sovrapposizione consente inoltre all'agente di riprovare ad acquisire le credenziali in caso di errore, garantendo che siano presenti credenziali valide prima che quelle esistenti diventino non valide.
  • Composizione: l'agente guest garantisce che le credenziali client siano costituite da una chiave privata EC (Elliptic Curve) concatenata al certificato client.
  • Unicità: l'agente guest garantisce che le credenziali siano univoche per un'istanza e non possano essere utilizzate altrove.

Per ulteriori informazioni sull'endpoint del server di metadati HTTPS, consulta la sezione Informazioni sull'endpoint del server di metadati HTTPS.

Per impostazione predefinita, l'agente guest scrive i certificati direttamente sul disco. Tuttavia, puoi configurare l'agente per integrare i certificati negli archivi di certificati integrati del sistema operativo. Per attivare questa integrazione, imposta la chiave dei metadati enable-https-mds-native-cert-store su true. Per impostare i metadati, consulta Imposta e rimuovi i metadati personalizzati.

Il comportamento dell'agente per l'aggiunta di certificati agli archivi di attendibilità del sistema operativo varia in base al sistema operativo come segue:

Linux

L'agente guest esegue i seguenti passaggi:

  1. Aggiunge il certificato radice MDS all'archivio di attendibilità del sistema. Il percorso specifico dipende dalla distribuzione del sistema operativo. Per esaminare queste posizioni, consulta Archiviazione dei certificati radice nell'archivio attendibilità del sistema operativo.
  2. Aggiorna l'archivio attendibile locale eseguendo il comando appropriato per il sistema operativo, ad esempio update-ca-certificates o update-ca-trust.

Windows

L'agente aggiunge le credenziali client a Cert:\LocalMachine\My e il certificato radice a Cert:\LocalMachine\Root.

Supporto del cluster di failover di Windows (solo Windows)

L'agente guest monitora il nodo attivo nel cluster di failover di Windows Server e si coordina con il bilanciatore del carico interno Google Cloud per inoltrare tutto il traffico del cluster al nodo previsto.

Puoi controllare questo comportamento utilizzando i seguenti campi nei metadati dell'istanza o nel file instance_configs.cfg:

  • enable-wsfc: se impostato su true, l'agente ignora tutte le informazioni sull'inoltro IP e inizia a rispondere alla porta di controllo di integrità'integrità. L'impostazione predefinita è false.
  • wsfc-agent-port: specifica la porta in cui l'agente risponde ai controlli di integrità. L'impostazione predefinita è 59998.
  • wsfc-addrs: un elenco di indirizzi IP separati da virgole. Questa impostazione avanzata ti consente di avere sia IP di forwarding normali sia IP cluster sulla stessa istanza. Quando imposti questo valore, l'agente salta la configurazione automatica solo per gli indirizzi IP in questo elenco. Per impostazione predefinita, questo valore non è impostato.

Passaggi successivi