Fehlerbehebung bei Validierungstests

Um zu prüfen, ob benutzerdefinierte VM-Images korrekt gestartet werden und die Konfigurationsanforderungen erfüllen, führt Image Builder automatisierte Validierungstests auf einer temporären Test-VM aus. Wenn einer dieser Tests fehlschlägt, wird die Pipeline beendet und Image Builder veröffentlicht das endgültige Image nicht.

Hinweis

Übersicht

Wenn die Anpassungsschritte erfolgreich abgeschlossen wurden, exportiert der Orchestrator das VM-Bootlaufwerk als temporäres Test-Image (mit dem Namen image-builder-test-image-BUILD_ID in der Familie image-builder-test-images).

Der Orchestrator startet eine Test-VM aus diesem Image und führt eine Reihe von Systemtests aus. Image Builder gibt die Testergebnisse im standardmäßigen JUnit-XML-Format direkt in die Cloud Build-Logs aus.

Fehlerbehebung bei bestimmten Validierungstests

Sehen Sie sich die häufigen Fehler und Diagnoseschritte für jeden Validierungstest an:

Intel IDPF-Treiberüberprüfung

Mit diesem Test wird geprüft, ob unterstützte VM-Instanzen den leistungsstarken Intel Infrastructure Data Path Function-Treiber (idpf) auf physischen Netzwerkschnittstellen laden.

  • Fehlerbedingung: Die VM besteht die Validierung nicht, wenn sie auf ein generisches Netzwerkadapterpaket zurückgreift oder wenn im Gastkernel das aktive idpf-Treibermodul fehlt.
  • Lösung:
    • Prüfen Sie, ob Ihr Basisbetriebssystem eine mit IDPF kompatible Kernelversion hat.
    • Prüfen Sie, ob der Treiber von Standard-Netzwerkdienstprogrammen entfernt oder auf die Blockierliste gesetzt wird.
    • Prüfen Sie bei benutzerdefinierten Kernel-Builds, ob CONFIG_IDPF konfiguriert ist.

Netzwerk und Überprüfung von Gast-Agents

Dieser Test prüft, ob die Instanz über eine funktionierende Gastkommunikation und standardisierte Netzwerkschnittstellenkonfigurationen verfügt.

  • Fehlerbedingung: Der Test schlägt unter einer der folgenden Bedingungen fehl:
    • Der Dienstmanager des Gast-Agents SubState zeigt keinen running-Status an.
    • Keine Nicht-Loopback-Netzwerkschnittstelle ist online.
    • Schnittstellennamen entsprechen nicht den erwarteten Standardmustern (z. B. eth* oder en*).
  • Lösung:

    • Prüfen Sie, ob der Gast-Agent installiert ist und so konfiguriert wurde, dass er beim Booten gestartet wird:

      systemctl is-active google-guest-agent
      
    • Achten Sie darauf, dass Ihre Netzwerkkonfigurationen (z. B. Netplan- oder ifupdown-Vorlagen) primäre virtuelle Schnittstellen nicht deaktivieren.

Secure Boot-Überprüfung

Mit diesem Test wird bestätigt, dass UEFI Secure Boot aktiv ist und dass das System die Validierung der Gastbetriebssystem-Kernelsignatur für das Image erzwingt.

  • Fehlerbedingung: Der Test schlägt fehl, wenn die Compute Engine-UEFI-Variablen melden, dass SecureBoot nicht 1 oder SetupMode nicht 0 ist.
  • Lösung:

    • Prüfen Sie, ob Ihr Bild gültige Signaturschlüssel enthält.
    • Prüfen Sie in der Datei imagebuilder.yaml, ob guestOsFeatures unter Ihrem Zielblock UEFI_COMPATIBLE enthält:

      destinations:
        - diskImage:
            guestOsFeatures:
              - UEFI_COMPATIBLE
      

Bestätigung pausieren oder fortsetzen

Bei diesem Test wird die Test-VM mithilfe der Compute Engine API angehalten. Es wird geprüft, ob die Verbindung nach der Wiederaufnahme der VM-Ausführung wiederhergestellt wird, ohne dass ein vollständiger Gast-Neustart ausgelöst wird.

  • Fehlerbedingung: Der Test schlägt fehl, wenn die Instanz beim Aufwachen neu startet, während des Ruhezustands hängen bleibt oder Netzwerk-Pings nicht wiederhergestellt werden können.
  • Lösung:
    • Prüfen Sie, ob ACPI-Dienste und Stromrichtlinien im Gastbetriebssystem aktiviert und so konfiguriert sind, dass sie auf ACPI-Ereignisse reagieren.
    • Prüfen Sie die Gastsystemprotokolle (/var/log/syslog oder /var/log/messages), um festzustellen, ob benutzerdefinierte Daemons System-Ruhezustandsanfragen blockieren.

Validierungstests überspringen

Wir empfehlen zwar, Produktionsbilder zu validieren, Sie können die Validierungstests während des Tests jedoch überspringen, indem Sie skipSystemTests: true im Block spec.config in der Datei imagebuilder.yaml festlegen:

spec:
  config:
    skipSystemTests: true