Hinweis
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren:
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
- Legen Sie eine Standardregion und -zone fest.
-
Logging-Channels prüfen
Image Builder schreibt Protokolle an mehrere Speicherorte, damit Sie Fehler auf verschiedenen Ebenen des Stacks diagnostizieren können:
- Cloud Build-Orchestrator-Logs: Hier werden die Builder-Schritte auf hoher Ebene in der Cloud Build Console angezeigt. Wenn ein Schritt fehlschlägt, wird ein Link zum entsprechenden Cloud Storage-Arbeitsverzeichnis ausgegeben.
- Logs des Anpassungs-VM-Agents: Der Anpassungs-Agent erfasst die Standardausgabe (
stdout) und den Standardfehler (stderr) Ihrer Anpassungsschritte. Der Orchestrator fragt diese Datensätze ab und streamt sie direkt in die Cloud Build-Tracelogs. Wenn die Logs abgeschnitten sind oder Sie sie vollständig ansehen möchten, rufen Sie den Ordner mit Ihrer Build-ID im_GCS_WORKDIR-Bucket auf. - Logs der seriellen Konsole: Wenn das Gastbetriebssystem nicht gestartet werden kann, kann der Anpassungs-Agent nicht gestartet werden. Sehen Sie sich in diesen Fällen die Logs der seriellen Konsole an. Der Orchestrator streamt die Ausgabe des seriellen Ports der Worker-VM direkt in Ihren Cloud Storage-Arbeitsverzeichnis-Bucket. Am Ende des fehlgeschlagenen Cloud Build-Traces wird ein Link zur seriellen Logdatei ausgegeben.
- Gastbetriebssystem-Journalprotokolle: Für die detaillierte Fehlerbehebung auf Systemebene unter Linux lädt der Anpassungs-Agent am Ende des Laufs eine vollständige Kopie des
journal-Systemprotokolls in Ihren Cloud Storage-Arbeitsverzeichnis-Bucket hoch.
Scriptfehler mit dem Debug-Flag beheben
Wenn ein Anpassungsschritt fehlschlägt, beendet Image Builder standardmäßig die Ausführung und löscht die Worker-VM sofort, um Kosten zu senken.
Wenn Sie Skripts interaktiv debuggen möchten, können Sie das Flag debug aktivieren. Dadurch bleibt die VM aktiv und Sie können über SSH eine direkte Verbindung zum aktiven Gastsystem herstellen.
Debug-Flag aktivieren
Legen Sie in der Datei imagebuilder.yaml debug: true im Block infrastructureConfig fest:
infrastructureConfig: machineType: e2-standard-4 zone: us-central1-a # Enable interactive debugging debug: true instanceDurationHours: 1.5
Build auslösen und auf Fehler warten
Reichen Sie Ihren Build mit Standardmethoden ein. Wenn in der Pipeline ein Skriptfehler auftritt, passiert Folgendes:
- Der Orchestrator pausiert die Ausführung des Builds.
- Image Builder löscht die Worker-VM nicht. Sie wird weiterhin in Ihrem Projekt ausgeführt.
- Die VM bleibt für die in der Eigenschaft
instanceDurationHoursangegebene Zeit aktiv, bevor sie automatisch beendet wird.
Verbindung zur Worker-VM herstellen, um Fehler zu beheben
Sehen Sie sich die Cloud Build-Konsolenausgabe an, um den Namen der aktiven Worker-VM-Instanz abzurufen. Öffnen Sie ein Terminal und stellen Sie mit gcloud compute ssh eine Verbindung zur Worker-VM her:
gcloud compute ssh WORKER_VM_NAME \
--zone=BUILD_ZONE \
--project=PROJECT_ID
Wenn in Ihrer imagebuilder.yaml-Datei externalIP: none konfiguriert ist, was zu keiner externen IP-Adresse führt, fügen Sie das Flag --tunnel-through-iap ein, um eine Verbindung über die TCP-Weiterleitung von Identity-Aware Proxy (IAP) herzustellen:
gcloud compute ssh WORKER_VM_NAME \
--zone=BUILD_ZONE \
--project=PROJECT_ID \
--tunnel-through-iap
Sobald die Verbindung hergestellt ist, können Sie Befehle in Echtzeit ausführen, Zieldateien prüfen, laufende Prozesse analysieren, Protokolle des Installationsverlaufs aufrufen und Skriptänderungen direkt auf der Festplatte testen.
Zwischen-Debug-Bilder analysieren
Alternativ dazu, die Worker-VM mit dem Flag debug aktiv zu halten, können Sie den Laufwerkstatus mit dem automatisch generierten Debug-Image analysieren:
- Wenn ein Build mit
debug: false(Standard) fehlschlägt, exportiert der Orchestrator das teilweise angepasste Bootlaufwerk als Compute Engine-Image. - Das Debug-Image wird mit dem Muster
image-builder-debug-image-BUILD_IDbenannt und der Image-Familieimage-builder-debug-imageszugewiesen. Wenn Sie das Dateisystem untersuchen möchten, erstellen Sie eine temporäre VM-Instanz mit diesem Debug-Image als Bootlaufwerk:
gcloud compute instances create temp-debug-vm \ --image-family=image-builder-debug-images \ --zone=ZONE \ --project=PROJECT_IDStellen Sie eine Verbindung zur
temp-debug-vm-Instanz her, um das Laufwerk zu prüfen und die Ursache für den Fehler bei der Anpassung zu ermitteln.
Cloud Build-Timeouts beheben
Wenn die Ausführung einer Image Builder-Pipeline länger als erwartet dauert, wird der Cloud Build-Job beendet und schlägt mit dem Status TIMEOUT fehl.
Die Build-Zeiten können variieren und sind in der Regel bei größeren Maschinentypen länger. Legen Sie das Zeitlimit so fest, dass genügend Zeit für den Build zur Verfügung steht. Wenn nicht festgelegt, beträgt das standardmäßige Cloud Build-Zeitlimit 1 Stunde (3600s).
Wenn Sie ein längeres Zeitlimit konfigurieren möchten, legen Sie das Feld timeout auf der Stammebene der Datei cloudbuild.yaml fest:
options: automapSubstitutions: true requestedVerifyOption: VERIFIED substitutionOption: ALLOW_LOOSE dynamicSubstitutions: true logging: CLOUD_LOGGING_ONLY # Increase the overall build timeout (for example, 2 hours) timeout: '7200s'
Nachdem Sie den Zeitüberschreitungswert aktualisiert haben, führen Sie den Build noch einmal aus und prüfen Sie, ob die Image Builder-Pipeline vollständig ausgeführt werden kann.
Weitere Informationen zum Parameter timeout finden Sie in der Cloud Build-Dokumentation unter timeout.