Funktionen des Gast-Agents


In diesem Dokument erhalten Sie einen Überblick über die Kernfunktionen des Gast-Agents, einer wichtigen Komponente der Gastumgebung. Die Gastumgebung enthält Skripts, Daemons und Binärdateien, die Instanzen benötigen, um in Compute Engine ausgeführt zu werden. Weitere Informationen finden Sie unter Gastumgebung.

Funktionsweise des Gast-Agents

Ab Version 20250901.00 verwendet der Gast-Agent eine auf Plug-ins basierende Architektur. Dieses Design verbessert die Zuverlässigkeit und Flexibilität, indem die Funktionen des Agents in separate Komponenten unterteilt werden.

Die Gast-Agent-Architektur besteht aus einigen wichtigen Komponenten:

  • Gast-Agent-Manager: Der zentrale Prozess auf Ihrer Instanz, der alle Plug-ins startet, stoppt und überwacht.
  • Core-Plug‑in: Dieses Plug‑in verwaltet die wesentlichen Dienste, die für die Ausführung Ihrer Instanz auf Google Clouderforderlich sind. Die Funktion kann nicht deaktiviert werden.
  • Optionale Plug-ins: Diese Plug-ins integrieren Ihre Instanz in andere Google Cloud Dienste wie Cloud Monitoring. Sie können festlegen, welche dieser Plug-ins auf Ihrer Instanz ausgeführt werden.
  • Agent-Steuerungsebene: Dies ist ein verwalteter Google Cloud Dienst, der auf der Backend-Infrastruktur von Google ausgeführt wird und den Lebenszyklus optionaler Plug-ins verwaltet, einschließlich ihrer Installation und Aktualisierungen.

Weitere Informationen zur Gast-Agent-Architektur finden Sie unter Gast-Agent.

Hauptfunktion

Das Core-Plug-in ist für die grundlegenden Dienste verantwortlich, die für die Funktion Ihrer Instanz in Compute Engine erforderlich sind. Im folgenden Abschnitt werden die Funktionen des Core-Plug-ins beschrieben. Viele dieser Funktionen lassen sich mit der Konfigurationsdatei des Gast-Agents anpassen.

Ersteinrichtung und Optimierung der Instanz

Der Gast-Agent führt mehrere Einrichtungsaufgaben aus, um die Instanz für die Ausführung in Compute Engine vorzubereiten. Wie in der folgenden Tabelle dargestellt, werden einige Aufgaben nur beim ersten Start ausgeführt, andere bei jedem Start.

Aufgabe Häufigkeit
SSH-Hostschlüssel generieren Beim ersten Start
boto-Konfiguration für die Verwendung von Cloud Storage erstellen Beim ersten Start
Für lokale SSD optimieren Bei jedem Start
Multi-Queue auf allen virtionet-Geräten aktivieren Bei jedem Start

Sie können diese Einrichtungsaufgaben steuern, indem Sie die InstanceSetup-Optionen der Konfigurationsdatei des Gast-Agents konfigurieren. Sie können beispielsweise die Optimierung lokaler SSDs deaktivieren, indem Sie optimize_local_ssd = false festlegen.

Erfassung von Systemtelemetriedaten

Der Gast-Agent erfasst beim Booten und dann alle 24 Stunden einige grundlegende Systemtelemetrieinformationen. Die aufgezeichneten Informationen umfassen Folgendes:

  • Version und Architektur des Gast-Agents
  • Name und Version des Betriebssystems
  • Betriebssystem-Kernel-Release und ‑Version

Sie können die Erfassung von Telemetriedaten deaktivieren, indem Sie den Metadatenschlüssel disable-guest-telemetry auf true setzen. Informationen zum Festlegen von Metadaten finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.

Zeitsynchronisierung (nur Linux)

Damit die Zeit korrekt erfasst wird, verwendet der Gast-Agent die clock_skew_daemon-Komponente, um die Uhr auf Ihrer Instanz regelmäßig an den physischen Server anzupassen, auf dem sie ausgeführt wird. Dieser Prozess verhindert das Problem der Uhrzeitabweichung und generiert eine system time has changed-Meldung in den Instanzlogs, die bestätigt, dass die Zeit erfolgreich synchronisiert wurde.

Der Agent synchronisiert die Uhr normalerweise nach einem Stopp- oder Start-Ereignis oder nach einer Migration.

Sie können die Komponente clock_skew_daemon deaktivieren, indem Sie in der Konfigurationsdatei des Gast-Agents clock_skew_daemon = false festlegen.

Ausführung von Metadatenskripts

Mit Startskripts und Shutdown-Skripts können Sie automatisierte Aufgaben ausführen, wenn Ihre Instanz gestartet oder beendet wird.

Der Gastagent unterstützt die Ausführung dieser Skripts auf folgende Weise:

  • Führt Skripts in einer Shell aus.
  • Wenn Sie mehrere Skripts angeben (z. B. wenn Sie sowohl startup-script als auch startup-script-url verwenden), führt der Agent beide aus.
  • Wenn für dasselbe Ereignis mehrere Skripts angegeben werden, führt der Agent zuerst das Skript von der URL aus.
  • Nachdem ein Skript beendet ist, protokolliert der Agent seinen Beendigungsstatus.

Sie können die Ausführung von Metadatenskripts konfigurieren, indem Sie die MetadataScripts-Optionen in der Konfigurationsdatei des Gast-Agents ändern.

Verwaltung von Nutzerkonten und SSH-Schlüsseln

Der Gast-Agent verwendet ein accounts_daemon, um lokale Nutzerkonten und SSH-Schlüssel zu verwalten, die den Zugriff auf die Instanz steuern. Das genaue Verhalten variiert je nach Linux- und Windows-Betriebssystem.

Sie können die Optionen für die Kontoverwaltung ändern, indem Sie die Accounts-Optionen in der Konfigurationsdatei des Gast-Agents konfigurieren.

Linux

Mit OS Login können Sie den SSH-Zugriff auf Ihre Instanzen mithilfe von IAM verwalten, ohne einzelne SSH-Schlüssel erstellen und verwalten zu müssen. Weitere Informationen zu OS Login finden Sie unter OS Login. Wenn OS Login auf Linux-Instanzen nicht aktiviert ist, erstellt und verwaltet der Agent lokale Nutzerkonten und ihre SSH-Schlüssel mithilfe von Metadateneinstellungen.

Wenn Sie SSH-Schlüssel in Instanz- oder Projektmetadaten hinzufügen oder daraus entfernen, erstellt oder löscht der Gast-Agent ein lokales Nutzerkonto. Der Gast-Agent führt außerdem die folgenden Aktionen aus, um diese lokalen Nutzerkonten zu verwalten:

  • Die authorized_keys-Datei wird für jedes verwaltete Nutzerkonto so gepflegt:
    • Wenn Sie Metadaten SSH-Schlüssel hinzufügen, erstellt der Agent eine authorized_keys-Datei für das Nutzerkonto.
    • Wenn Sie alle SSH-Schlüssel für einen Nutzer aus den Metadaten entfernen, löscht der Agent die authorized_keys-Datei des Nutzerkontos.
  • Verwaltet Administratorberechtigungen mithilfe der Linux-Gruppe google-sudoers. Alle Mitglieder dieser Gruppe erhalten Sudo-Berechtigungen für die Instanz.
  • Alle bereitgestellten Nutzerkonten werden der Gruppe google-sudoers hinzugefügt.
  • Fügt Nutzerkonten allen zusätzlichen Linux-Gruppen hinzu, die Sie in der Option groups der Konfigurationsdatei des Gast-Agents angeben.

Windows

Auf Windows-Instanzen erstellt der Agent automatisch lokale Nutzerkonten für alle SSH-Nutzerkonten, die in den Metadaten-SSH-Schlüsseln auf Instanz- oder Projektebene angegeben sind. Der Gast-Agent erstellt auch Nutzerkonten und legt Passwörter fest oder setzt sie zurück. Diese lokalen Nutzerkonten sind erforderlich, um über SSH eine Verbindung zu Windows-Instanzen herzustellen.

Um eine unbeabsichtigte AD-Nutzerbereitstellung zu verhindern, deaktivieren Sie den Kontomanager auf der AD-Controller-Instanz. Weitere Informationen zum Einrichten von AD in Compute Engine finden Sie unter Domaincontroller bereitstellen.

OS Login konfigurieren (nur Linux)

Mit OS Login können Sie den SSH-Zugriff auf Ihre Instanzen mithilfe von IAM verwalten, ohne einzelne SSH-Schlüssel erstellen und verwalten zu müssen. Weitere Informationen zu OS Login finden Sie in der OS Login-Dokumentation.

Wenn Sie OS Login aktivieren, ist der Gast-Agent dafür verantwortlich, die Instanz für die Verwendung von OS Login zu konfigurieren.

Der Gast-Agent konfiguriert OS Login, indem er die folgenden Aufgaben ausführt:

  • Fügt der Konfigurationsdatei SSHD einen Google-Konfigurationsblock hinzu und startet SSHD neu.
  • Fügt der Datei nsswitch.conf OS Login-Einträge hinzu.
  • Fügt der Konfigurationsdatei PAM für SSHD OS Login-Einträge hinzu.

Wenn Sie OS Login deaktivieren, werden die Konfigurationsänderungen entfernt. Die Optionen im Abschnitt Accounts der Konfigurationsdatei SSHD gelten nicht für OS Login-Nutzer.

Netzwerkverwaltung

Der Gast-Agent konfiguriert die Netzwerkschnittstellen Ihrer Instanz beim Booten automatisch. Die Netzwerkkonfiguration wird vom Metadatenserver gelesen, damit Ihre Instanz richtig mit dem Netzwerk verbunden wird und auf andere Google Cloud-Dienste zugreifen kann.

Sie können das Netzwerkverwaltungsverhalten des Agents steuern, indem Sie die NetworkInterfaces-Optionen in der Konfigurationsdatei des Gast-Agents konfigurieren. Sie können beispielsweise die Option manage_primary_nic = true festlegen, damit der Agent die primäre Netzwerkkarte (NIC) zusätzlich zu sekundären NICs verwaltet.

Bei jedem Start führt der Gast-Agent die folgenden wichtigen Aufgaben aus:

  • Aktiviert Netzwerkschnittstellen: Der Agent erkennt den aktiven Netzwerkmanager in Ihrem Betriebssystem und verwendet ihn, um alle sekundären Netzwerk-NICs zu aktivieren.
  • Konfiguriert IP-Routen: Der Agent richtet die erforderlichen IP-Routen (nur IPv4) für Funktionen wie IP-Weiterleitung und Alias-IP-Bereiche so ein:
    • Legt Routen auf der primären Ethernet-Schnittstelle fest.
    • Konfiguriert standardmäßig Google-Routen mit der Routingprotokoll-ID 66. Diese ID ist ein Namespace für IP-Adressen, die für den Gast-Agent konfiguriert sind. Diese ID kann mit der Option ethernet_proto_id in der Konfigurationsdatei des Gast-Agents geändert werden.
  • Route zum Metadatenserver erstellen: Der Agent sorgt dafür, dass Ihre primäre NIC immer mit dem Metadatenserver kommunizieren kann, um Instanzinformationen abzurufen.
  • VLAN-Konfiguration: Wenn Ihre Instanz für die Verbindung mit einem virtuellen lokalen Netzwerk (VLAN) konfiguriert ist, übernimmt der Gast-Agent automatisch die Einrichtung. Die VLAN-Konfiguration wird vom Metadatenserver gelesen und die Netzwerkschnittstelle in der Instanz wird so konfiguriert, dass das richtige VLAN-Tag verwendet wird. So wird sichergestellt, dass die Instanz über das vorgesehene logische Netzwerk kommuniziert. Wichtig: Wenn das VLAN an die primäre NIC angehängt ist, wird es vom Gast-Agent konfiguriert, auch wenn manage_primary_nic deaktiviert ist.

Auswahl des Netzwerkmanagers

Unter Linux erkennt der Gast-Agent automatisch, welcher Netzwerkmanager auf dem System verfügbar ist, und verwendet ihn zum Konfigurieren der Netzwerkschnittstellen. Der Agent sucht in der Reihenfolge der Priorität von netplan bis dhclient nach unterstützten Managern.

In der folgenden Tabelle sind die unterstützten Netzwerkmanager aufgeführt, sortiert nach dem Betriebssystem, dem sie standardmäßig am häufigsten zugeordnet sind. Ihre spezifische Instanzkonfiguration kann abweichen. In dieser Tabelle wird jedoch der Standard-Netzwerkmanager für die aufgeführten Betriebssysteme angegeben.

Netzwerkmanager Betriebssystem Konfigurationsstandort Beispielpfad Hinweise
netplan
  • Debian 12 oder höher
  • Ubuntu 20.04 oder höher
/run/netplan/ /run/netplan/20-google-guest-agent-eth0.yaml Der Agent kann auch einen Drop-in-Standort unter /etc/systemd/network/ verwenden.
wicked
  • SLES
/etc/sysconfig/network/ /etc/sysconfig/network/ifcfg-eth0 Vorhandene ifcfg-Dateien werden nicht überschrieben, sondern übersprungen.
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 oder früher
  • Ubuntu 18.04 oder niedriger
/run/ /run/dhclient.google-guest-agent.eth0.ipv4.pid Wenn keiner der anderen Netzwerkmanager erkannt wird, verwendet der Gast-Agent standardmäßig dhclient.

Sichere Verwaltung von Anmeldedaten für den Metadatenserver (MDS)

Shielded VMs unterstützen jetzt die sichere Kommunikation mit dem Metadatenserver über den HTTPS-Endpunkt https://metadata.google.internal/computeMetadata/v1. Diese Verbesserung bietet einen sichereren Kanal für den Metadatenzugriff.

Damit diese sichere Kommunikation möglich ist, ruft der Gast-Agent die erforderlichen Anmeldedaten ab und speichert sie auf der Festplatte der Instanz. Diese Anmeldedaten werden an einem Standardspeicherort gespeichert und sind für jede Clientanwendung zugänglich, die auf der Instanz ausgeführt wird. Informationen zu diesen Speicherorten finden Sie unter Wo werden Zertifikate gespeichert?

Die Einrichtung von HTTPS-MDS-Zertifikaten ist standardmäßig deaktiviert. Wenn Sie möchten, dass die HTTPS-MDS-Zertifikate automatisch für Ihre Shielded VMs eingerichtet werden, legen Sie den Metadatenschlüssel disable-https-mds-setup für Ihre Instanz oder Ihr Projekt auf false fest. Informationen zum Festlegen von Metadaten finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.

Die Verwaltung von Anmeldedaten durch den Gast-Agent umfasst:

  • Erstes Update: Sowohl das Stammzertifikat als auch die Clientanmeldedaten werden bei jedem Start des Gast-Agent-Prozesses aktualisiert.
  • Automatische Aktualisierung: Zur Erhöhung der Sicherheit werden die Clientanmeldedaten des Gast-Agents automatisch alle 48 Stunden aktualisiert.
  • Überschneidungszeitraum: Der Agent generiert und speichert neue Anmeldedaten, während die alten weiterhin gültig sind. Während des Überschneidungszeitraums haben Kunden genügend Zeit, auf die neuen Anmeldedaten umzustellen, bevor die alten ablaufen. In dieser Überschneidungsphase kann der Agent auch versuchen, Anmeldedaten noch einmal abzurufen, falls ein Fehler auftritt. So wird dafür gesorgt, dass gültige Anmeldedaten vorhanden sind, bevor die vorhandenen ungültig werden.
  • Zusammensetzung: Der Gast-Agent sorgt dafür, dass die Clientanmeldedaten aus einem privaten EC-Schlüssel (Elliptic Curve) bestehen, der mit dem Clientzertifikat verkettet ist.
  • Eindeutigkeit: Der Gast-Agent sorgt dafür, dass Anmeldedaten für eine Instanz eindeutig sind und nicht an anderer Stelle verwendet werden können.

Weitere Informationen zum HTTPS-Metadatenserver-Endpunkt finden Sie unter HTTPS-Metadatenserver-Endpunkt.

Standardmäßig schreibt der Gast-Agent Zertifikate direkt auf die Festplatte. Sie können den Agent jedoch so konfigurieren, dass Zertifikate in die integrierten Zertifikatsspeicher des Betriebssystems eingebunden werden. Um diese Integration zu aktivieren, legen Sie den Metadatenschlüssel enable-https-mds-native-cert-store auf true fest. Informationen zum Festlegen von Metadaten finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.

Das Verhalten des Agents beim Hinzufügen von Zertifikaten zu Betriebssystem-Trust Stores variiert je nach Betriebssystem:

Linux

Der Gast-Agent führt die folgenden Schritte aus:

  1. Fügt das MDS-Root-Zertifikat dem Trust Store des Systems hinzu. Der genaue Pfad hängt von der Betriebssystemdistribution ab. Informationen zu diesen Speicherorten finden Sie unter Speicher von Stammzertifikaten im OS-Vertrauensspeicher.
  2. Aktualisiert den lokalen Trust Store, indem der entsprechende Befehl für das Betriebssystem ausgeführt wird, z. B. update-ca-certificates oder update-ca-trust.

Windows

Der Agent fügt Clientanmeldedaten zu Cert:\LocalMachine\My und das Root-Zertifikat zu Cert:\LocalMachine\Root hinzu.

Unterstützung von Windows-Failover-Clustern (nur Windows)

Der Gast-Agent überwacht den aktiven Knoten im Windows Server-Failover-Cluster und koordiniert mit dem Google Cloud internen Load Balancer, um den gesamten Cluster-Traffic an den erwarteten Knoten weiterzuleiten.

Sie können dieses Verhalten mit den folgenden Feldern in den Instanzmetadaten oder in der Datei instance_configs.cfg steuern:

  • enable-wsfc: Wenn auf true gesetzt, ignoriert der Agent alle Informationen zur IP-Weiterleitung und beginnt, auf den Systemdiagnose-Port zu reagieren. Die Standardeinstellung ist false.
  • wsfc-agent-port: gibt den Port an, über den der Agent auf Systemdiagnosen reagiert. Die Standardeinstellung ist 59998.
  • wsfc-addrs: eine durch Kommas getrennte Liste von IP-Adressen. Mit dieser erweiterten Einstellung können Sie sowohl normale Weiterleitungs-IPs als auch Cluster-IPs auf derselben Instanz verwenden. Wenn Sie diese Option festlegen, überspringt der Agent die automatische Konfiguration nur für die IPs in dieser Liste. Standardmäßig ist dieser Wert nicht festgelegt.

Nächste Schritte