VM-Erweiterungen mit Erweiterungsrichtlinien verwalten

VM Extension Manager verwendet Erweiterungsrichtlinien, um Ihre VM-Erweiterungen im großen Maßstab zu verwalten. Weitere Informationen finden Sie unter Informationen zu VM Extension Manager. In diesem Dokument wird beschrieben, wie Sie VM-Erweiterungsrichtlinien aufrufen, aktualisieren und löschen.

IAM-Rollen und -Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die Berechtigungen zum Aufrufen, Ändern und Löschen von VM-Erweiterungsrichtlinien erhalten:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Aufrufen, Ändern und Löschen von VM-Erweiterungsrichtlinien erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um VM-Erweiterungsrichtlinien aufzurufen, zu ändern und zu löschen:

  • So rufen Sie Erweiterungsrichtlinien auf: compute.vmExtensionPolicies.list
  • So rufen Sie die Details einer Erweiterungsrichtlinie auf: compute.vmExtensionPolicies.get
  • So ändern Sie Erweiterungsrichtlinien: compute.vmExtensionPolicies.update
  • So löschen Sie Erweiterungsrichtlinien: compute.vmExtensionPolicies.delete

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen zu IAM-Rollen und ‑Berechtigungen in Compute Engine finden Sie unter Compute Engine-Rollen und ‑Berechtigungen.

Erweiterungsrichtlinien ansehen

Sie können eine Liste der VM-Erweiterungsrichtlinien in Ihrem Projekt oder die Details einer bestimmten Richtlinie über die Google Cloud Console oder die Google Cloud CLI aufrufen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Erweiterungsrichtlinien auf.

    Zu den VM-Erweiterungsrichtlinien

    Auf dieser Seite werden alle VM-Erweiterungsrichtlinien in Ihrem Projekt aufgeführt.
  2. Wenn Sie Details zu einer bestimmten Erweiterungsrichtlinie aufrufen möchten, klicken Sie auf den Namen der Richtlinie.

gcloud

Verwenden Sie den Befehl gcloud beta compute zone-vm-extension-policies list, um alle Erweiterungsrichtlinien in einem Projekt aufzurufen:

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die ID Ihres Projekts in Google Cloud .
  • ZONE: der Name der Zone, in der Sie VM-Erweiterungsrichtlinien auflisten möchten.
  • PAGE_SIZE: Die maximale Anzahl der Ergebnisse, die pro Seite zurückgegeben werden sollen.

Verwenden Sie den Befehl gcloud beta compute zone-vm-extension-policies describe, um Details zu einer bestimmten Erweiterungsrichtlinie aufzurufen:

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

Ersetzen Sie Folgendes:

  • POLICY_NAME: Der Name der VM-Erweiterungsrichtlinie, die Sie beschreiben möchten.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • ZONE: die Google Cloud Zone, in der sich die VM-Erweiterungsrichtlinie befindet.

Erweiterungen durch Aktualisieren einer VM-Erweiterungsrichtlinie ändern

Wenn Sie eine Richtlinie aktualisieren, werden die Änderungen vom VM Extension Manager in der Regel innerhalb einer Minute auf alle anwendbaren VMs angewendet. Wenn Sie Einschlusslabels ändern, werden Erweiterungen möglicherweise auf neuen VMs installiert oder von vorhandenen VMs deinstalliert, je nachdem, ob sie den aktualisierten Labels entsprechen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Erweiterungsrichtlinien auf.

    Zu den VM-Erweiterungsrichtlinien

  2. Wählen Sie die Richtlinie aus, die Sie aktualisieren möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Ändern Sie die Beschreibung, Priorität, Erweiterungen oder Ziel-VM-Instanzen.
  5. Klicken Sie auf Speichern.

gcloud

Verwenden Sie den Befehl gcloud beta compute zone-vm-extension-policies update, um eine vorhandene Richtlinie für VM-Erweiterungen zu ändern. Wenn Sie eine Richtlinie mit gcloud aktualisieren, wird die Richtlinie durch die Anfrage vollständig ersetzt. Alle optionalen Felder, die Sie weglassen, werden auf ihre Standardwerte zurückgesetzt, anstatt die vorhandenen Werte aus der geänderten Richtlinie beizubehalten.

Führen Sie den folgenden Befehl aus, um eine VM-Erweiterungsrichtlinie zu aktualisieren:

  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"

Ersetzen Sie Folgendes:

  • POLICY_NAME: Der Name der VM-Erweiterungsrichtlinie, die aktualisiert werden soll.
  • ZONE: Die Google Cloud Zone, in der die Richtlinie gilt.
  • EXTENSION_NAME_1, EXTENSION_NAME_2: die Namen der Erweiterungen, die aktualisiert werden sollen. Sie müssen mindestens eine Erweiterung angeben.
  • VERSION_1: die Version der ersten VM-Erweiterung.
  • VERSION_2: die Version der zweiten VM-Erweiterung.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, wobei der Schlüssel der Name der Erweiterung und der Wert der Pfad zur Konfigurationsdatei für diese Erweiterung ist. Dieser Pfad befindet sich auf der VM, auf der Sie den gcloud-Befehl ausführen, nicht auf der VM, auf der Sie die Erweiterung installieren.

    Alternativ können Sie die Konfiguration als Inline-String angeben. Verwenden Sie dazu das Flag --config anstelle von --config-from-file, z. B. EXTENSION_NAME_1="CONFIG_1". Sie können entweder --config-from-file oder --config verwenden, aber nicht beides im selben Befehl.

  • KEY_1=VALUE_1: Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, die Einschlusslabels für einen Selektor definieren. VMs müssen alle angegebenen Labels in einem Selektor haben, damit sie als Ziel infrage kommen. Wenn Sie --inclusion-labels mehrmals angeben, richtet sich die Richtlinie an VMs, die einen beliebigen der angegebenen Selektoren entsprechen (logisches ODER). Wenn Sie dieses Flag weglassen, gilt die Richtlinie für alle VMs in der angegebenen Zone.

  • PRIORITY_NUMBER: Die Prioritätsnummer für die VM-Erweiterungsrichtlinie.

  • DESCRIPTION: Eine Beschreibung der VM-Erweiterungsrichtlinie.

Erweiterungen durch Löschen einer VM-Erweiterungsrichtlinie deinstallieren

Wenn Sie eine Richtlinie löschen, deinstalliert VM Extension Manager die Erweiterungen von allen VMs, die von dieser Richtlinie verwaltet werden. Wenn jedoch eine andere aktive Richtlinie mit niedrigerer Priorität auf eine VM angewendet wird und dieselbe Erweiterung deklariert, bleibt die Erweiterung basierend auf der Richtlinie mit niedrigerer Priorität auf dieser VM installiert.

VM Extension Manager entfernt Erweiterungen innerhalb einer Minute nach dem Löschen der Richtlinie von allen zugänglichen VMs. Wenn eine VM nicht zugänglich ist, weil der Gast-Agent entfernt oder die VM gelöscht wurde, überspringt der VM Extension Manager das Löschen der Erweiterung. Wenn eine solche VM wieder verfügbar ist, entfernt VM Extension Manager die Erweiterungen zu diesem Zeitpunkt.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Erweiterungsrichtlinien auf.

    Zu den VM-Erweiterungsrichtlinien

  2. Wählen Sie die Richtlinie aus, die Sie löschen möchten.
  3. Klicken Sie auf Löschen.
  4. Klicken Sie im Bestätigungsdialogfeld auf Löschen.

gcloud

Verwenden Sie den Befehl gcloud beta compute zone-vm-extension-policies delete, um eine vorhandene VM-Erweiterungsrichtlinie zu löschen.

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

Ersetzen Sie Folgendes:

  • POLICY_NAME: Der Name der VM-Erweiterungsrichtlinie, die Sie löschen möchten.
  • PROJECT_ID: Die ID Ihres Projekts in Google Cloud .
  • ZONE: die Google Cloud Zone, in der sich die Richtlinie befindet.

Fehlerbehebung bei VM-Erweiterungen

In diesem Abschnitt wird beschrieben, wie Sie Probleme mit VM-Erweiterungen beheben.

Prüfen, ob eine Erweiterung installiert ist

Sie können prüfen, ob eine Erweiterung installiert ist, indem Sie auf der VM Folgendes prüfen:

  • Stellen Sie eine Verbindung zur VM her und prüfen Sie, ob Prozesse ausgeführt werden.

    In der folgenden Tabelle sind die Prozessnamen für die einzelnen Erweiterungen aufgeführt:

    Name der Erweiterung Name des Erweiterungsprozesses
    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'
    Ersetzen Sie EXTENSION_PROCESS_NAME durch den Prozessnamen der Erweiterung. Führen Sie beispielsweise den folgenden Befehl aus, um den Ops-Agent-Prozess zu prüfen:
    ps aux | grep 'ops-agent'

    Windows

    tasklist | findstr "EXTENSION_PROCESS_NAME"
    Ersetzen Sie EXTENSION_PROCESS_NAME durch den Prozessnamen der Erweiterung. Führen Sie beispielsweise den folgenden Befehl aus, um den Ops-Agent-Prozess zu prüfen:
    tasklist | findstr "ops-agent"

    Die Ausgabe des Befehls ps auf einer Linux-VM für den Ops-Agent kann einen Eintrag wie den folgenden enthalten:

    ....
    /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3
    ....
  • Gast-Agent-Logs aktivieren und prüfen In den Protokollen des Gast-Agents wird angezeigt, wann eine Erweiterung installiert und gestartet wird.

    Das Folgende ist ein Beispiel für die Ausgabe, die in den Gastagent-Logs angezeigt werden kann, wenn eine Ops-Agent-Erweiterung installiert ist:

    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"

Installationsprobleme beheben

Wenn eine Erweiterung nach dem Erstellen einer Richtlinie nicht auf einer VM installiert wird, können Sie das Problem mit den folgenden Schritten beheben:

  1. Warten Sie, bis die Richtlinien durchgesetzt werden. Es kann bis zu einer Stunde dauern, bis eine Richtlinie angewendet wird, einschließlich aller Wiederholungsversuche.
  2. Prüfen Sie, ob die in der Richtlinie angegebenen Einschlusslabels mit den Labels der VM übereinstimmen.
  3. Um potenzielle Installationsfehler zu erkennen, aktivieren Sie das Debug-Logging für den Gast-Agent.
  4. Nachdem Sie das zugrunde liegende Problem behoben haben, können Sie die Installation mit einer der folgenden Methoden noch einmal versuchen:

    • Richtlinie neu erstellen: Löschen Sie die Richtlinie und erstellen Sie eine neue Richtlinie.
    • Temporäre Richtlinie mit hoher Priorität verwenden: Wenn Sie vermeiden möchten, eine Richtlinie neu zu erstellen, die sich auf viele VMs auswirkt, verwenden Sie eine temporäre Richtlinie mit höherer Priorität, um die Installation auf bestimmten VMs noch einmal zu versuchen:

      1. Fügen Sie den VMs, bei denen die Installation fehlgeschlagen ist, ein neues Label hinzu. Fügen Sie beispielsweise das Label status=failed hinzu.
      2. Erstellen Sie eine Richtlinie mit höherer Priorität, die auf das neue Label ausgerichtet ist. Wenn die ursprüngliche Richtlinie, bei der ein Fehler aufgetreten ist, beispielsweise die Standardpriorität 1000 hatte, erstellen Sie eine Richtlinie mit einer höheren Priorität, z. B. 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. Nachdem die Erweiterung erfolgreich installiert wurde, löschen Sie die temporäre Richtlinie und entfernen Sie das Label von den VMs. Die Erweiterung bleibt installiert, da die ursprüngliche Richtlinie weiterhin aktiv ist.

Debug-Logs für den Gast-Agent ansehen

Um das Debug-Logging zu aktivieren, fügen Sie der Konfigurationsdatei des Gast-Agents im Abschnitt Core die folgenden Einstellungen für die Logebene und die Ausführlichkeit hinzu:

Linux

  1. Öffnen Sie die Konfigurationsdatei des Gast-Agents unter /etc/default/instance_configs.cfg.
  2. Fügen Sie der Datei die folgenden Zeilen hinzu. Wenn der Abschnitt [Core] bereits vorhanden ist, fügen Sie die Einstellungen log_level und log_verbosity hinzu.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Starten Sie den Gast-Agent-Manager mit dem folgenden Befehl neu:

     sudo systemctl restart google-guest-agent-manager
    
  4. Führen Sie den folgenden Befehl aus, um Logs für Gast-Agent-Aktivitäten während der Erweiterungsinstallation aufzurufen:

    journalctl -u google-guest-agent-manager
    

Windows

  1. Öffnen Sie die Konfigurationsdatei des Gast-Agents unter C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. Fügen Sie der Datei die folgenden Zeilen hinzu. Wenn der Abschnitt [Core] bereits vorhanden ist, fügen Sie die Einstellungen log_level und log_verbosity hinzu.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Starten Sie den Gast-Agent-Manager neu, indem Sie den folgenden Befehl als Windows-Administrator ausführen:

     net stop GCEAgentManager
     net start GCEAgentManager
    
  4. Wenn Sie Logs für Gast-Agent-Aktivitäten während der Erweiterungsinstallation aufrufen möchten, führen Sie den folgenden Befehl in PowerShell aus:

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Nachdem Sie Debug-Logs aktiviert haben, prüfen Sie auf die folgenden häufigen Fehler:

  • Nicht genügend Speicherplatz: Wenn in den Protokollen nicht genügend Speicherplatz gemeldet wird, geben Sie Speicherplatz auf dem Laufwerk frei oder ändern Sie die Größe des Laufwerks, um mehr Speicherplatz hinzuzufügen.
  • Übermäßige Ressourcennutzung: Wenn die Logs darauf hinweisen, dass der Gast-Agent die Erweiterung aufgrund übermäßiger Arbeitsspeicher- oder CPU-Nutzung beendet hat, ändern Sie den Maschinentyp der VM in einen mit mehr Ressourcen.

Nächste Schritte