Probleme bei der Clustererstellung beheben

gcpdiag-Tool verwenden

gcpdiag ist ein Open-Source-Tool. Es ist kein offiziell unterstütztes Google Cloud -Produkt. Mit dem Tool gcpdiag können Sie Probleme mit Google Cloud-Projekten identifizieren und beheben. Weitere Informationen finden Sie im gcpdiag-Projekt auf GitHub.

Mit dem Tool gcpdiag können Sie die folgenden Probleme beim Erstellen von Dataproc-Clustern ermitteln, indem Sie die folgenden Prüfungen durchführen:

  • Fehler bei nicht verfügbaren Artikeln:Hier werden Logs aus dem Log-Explorer ausgewertet, um nicht verfügbare Artikel in Regionen und Zonen zu ermitteln.
  • Unzureichendes Kontingent:Prüft die Kontingentverfügbarkeit im Dataproc-Clusterprojekt.
  • Unvollständige Netzwerkkonfiguration:Führt Netzwerkverbindungstests durch, einschließlich Prüfungen auf erforderliche Firewallregeln und die Konfiguration externer und interner IP-Adressen. Wenn der Cluster gelöscht wurde, kann mit dem gcpdiag-Tool keine Netzwerkverbindung geprüft werden.
  • Falsche projektübergreifende Konfiguration:Prüft projektübergreifende Dienstkonten und überprüft die Durchsetzung zusätzlicher Rollen und Organisationsrichtlinien.
  • Fehlende IAM-Rollen für freigegebene VPC-Netzwerke:Wenn der Dataproc-Cluster ein freigegebenes VPC-Netzwerk verwendet, wird geprüft, ob die erforderlichen Dienstkontorollen hinzugefügt wurden.
  • Fehler bei Initialisierungsaktionen: Hier werden Logs aus Logs Explorer ausgewertet, um Fehler und Zeitüberschreitungen bei Initialisierungsaktionsskripts zu erkennen.

Eine Liste der Schritte zum Erstellen von gcpdiag-Clustern finden Sie unter Mögliche Schritte.

Befehl gcpdiag ausführen

Sie können den Befehl gcpdiag in Cloud Shell in derGoogle Cloud -Konsole oder in einem Docker-Container ausführen.

Google Cloud console

  1. Führen Sie den folgenden Befehl aus und kopieren Sie ihn.
  2. gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Öffnen Sie die Google Cloud Console und aktivieren Sie Cloud Shell.
  4. Cloud Console öffnen
  5. Fügen Sie den kopierten Befehl ein.
  6. Führen Sie den Befehl gcpdiag aus, um das Docker-Image gcpdiag herunterzuladen und dann Diagnoseprüfungen durchzuführen. Folgen Sie gegebenenfalls der Anleitung für die Ausgabe, um fehlgeschlagene Prüfungen zu beheben.

Docker

Sie können gcpdiag mit einem Wrapper ausführen, der gcpdiag in einem Docker-Container startet. Docker oder Podman muss installiert sein.

  1. Kopieren Sie den folgenden Befehl und führen Sie ihn auf Ihrer lokalen Workstation aus.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Führen Sie den Befehl gcpdiag aus.
    ./gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

Verfügbare Parameter für dieses Runbook ansehen

Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts, das die Ressource enthält
    • CLUSTER_NAME: Der Name des Ziel-Dataproc-Clusters in Ihrem Projekt.
    • OPTIONAL_PARAMETERS: Fügen Sie einen oder mehrere der folgenden optionalen Parameter hinzu. Diese Parameter sind erforderlich, wenn der Cluster gelöscht wurde.
      • cluster_uuid: Die UUID des Dataproc-Zielclusters in Ihrem Projekt
      • service_account: Das VM-Dienstkonto des Dataproc-Clusters
      • subnetwork: Der vollständige URI-Pfad des Dataproc-Cluster-Subnetzwerks
      • internal_ip_only: Richtig oder falsch
      • cross_project: Die projektübergreifende ID, wenn für den Dataproc-Cluster ein VM-Dienstkonto in einem anderen Projekt verwendet wird.

Nützliche Flags:

Eine Liste und Beschreibung aller gcpdiag-Tool-Flags finden Sie in der gcpdiag-Nutzungsanleitung.

Fehler bei der Clustererstellung verstehen und beheben

In diesem Abschnitt werden Dataproc-Fehlermeldungen und ihre häufigsten Ursachen und Lösungen aufgeführt.

  • Zeitüberschreitung bei Vorgang:Nur 0 von 2 erforderlichen Datenknoten/Knotenmanagern.

    Ursache: Der Controllerknoten kann den Cluster nicht erstellen, da er nicht mit Worker-Knoten kommunizieren kann.

    Lösung:

  • Erforderliche compute.subnetworks.use-Berechtigung für projects/{projectId}/regions/{region}/subnetworks/{subnetwork}

    Ursache: Dieser Fehler kann auftreten, wenn Sie versuchen, einen Dataproc-Cluster mit einem VPC-Netzwerk in einem anderen Projekt einzurichten und das Dataproc-Dienstkonto Dienst-Agent nicht die erforderlichen Berechtigungen für das freigegebene VPC-Projekt hat, in dem das Netzwerk gehostet wird.

    Lösung: Führen Sie die unter Cluster erstellen, der ein VPC-Netzwerk in einem anderen Projekt verwendet aufgeführten Schritten aus.

  • In der Zone projects/zones/{zone} sind nicht genügend Ressourcen verfügbar, um die Anfrage (resource type:compute) auszuführen.

    Ursache: Die Zone, die zum Erstellen des Clusters verwendet wird, hat nicht genügend Ressourcen.

    Lösung:

  • Fehler bei Kontingentüberschreitung

    Unzureichendes CPUS-/CPUS_ALL_REGIONS-Kontingent
    Unzureichendes Kontingent "DISKS_SUM_GB"
    Unzureichendes Kontingent "IN_USE_ADDRESSES"

    Ursache: Ihre CPU-, Laufwerk- oder IP-Adressanfrage überschreitet das verfügbare Kontingent.

    Lösung: Zusätzliche Kontingente können Sie über die Google Cloud -Konsole anfordern.

  • Initialisierungsaktion fehlgeschlagen

    Ursache: Die während der Clustererstellung angegebene Initialisierungsaktion konnte nicht installiert werden.

    Lösung:

  • Fehler beim Initialisieren des Knotens CLUSTER-NAME-m. … Ausgabe in: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Ursache: Der Controllerknoten des Dataproc-Clusters konnte nicht initialisiert werden.

    Lösung:

  • Clustererstellung fehlgeschlagen: IP-Adressbereich aufgebraucht

    Ursache: Der zum Bereitstellen der angeforderten Clusterknoten erforderliche IP-Adressbereich ist nicht verfügbar.

    Lösung:

    • Cluster in einem anderen Subnetzwerk oder Netzwerk erstellen
    • Reduzieren Sie die Nutzung des Netzwerks, um IP-Adressen freizugeben.
    • Warten Sie, bis im Netzwerk genügend IP-Adressen verfügbar sind.
  • Fehlermeldung im Initialisierungsskript: Das Repository REPO_NAME hat keine Release-Datei mehr

    Ursache: Das Debian-Repository „oldstable backports“ wurde gelöscht.

    Lösung:

    Fügen Sie den folgenden Code vor dem Code ein, mit dem apt-get in Ihrem Initialisierungsskript ausgeführt wird.

    oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}');
    stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}');
    
    matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)"
    if [[ -n "$matched_files" ]]; then
      for filename in "$matched_files"; do
        grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \
          sed -i -e 's/^.*-backports.*$//' "$filename"
      done
    fi
    
  • Zeitüberschreitung beim Warten auf die Meldung der Instanz DATAPROC_CLUSTER_VM_NAME oder Netzwerk nicht erreichbar: dataproccontrol-REGION.googleapis.com

    Ursache: Diese Fehlermeldungen weisen darauf hin, dass die Netzwerkeinrichtung Ihres Dataproc-Clusters unvollständig ist. Möglicherweise fehlt die Route zum Standard-Internetgateway oder Firewallregeln.

    Lösung:

    Zur Behebung dieses Problems können Sie die folgenden Konnektivitätstests erstellen:

    • Erstellen Sie einen Konnektivitätstest zwischen zwei VMs in einem Dataproc-Cluster. Das Ergebnis dieses Tests hilft Ihnen zu verstehen, ob die Firewallregeln zum Zulassen von eingehendem oder ausgehendem Traffic Ihres Netzwerks korrekt auf die Cluster-VMs angewendet werden.
    • Konnektivitätstest erstellen zwischen einer VM des Dataproc-Clusters und einer aktuellen IP-Adresse der Dataproc-Steuerungs-API. Verwenden Sie den folgenden Befehl, um eine aktuelle IP-Adresse der Dataproc Control API abzurufen:
    dig dataproccontrol-REGION.googleapis.com A
    

    Verwenden Sie eine der IPv4-Adressen im Antwortbereich der Ausgabe.

    Das Ergebnis des Konnektivitätstests hilft Ihnen, festzustellen, ob die Route zum Standard-Internetgateway und die Firewall für ausgehenden Traffic korrekt konfiguriert sind.

    Auf Grundlage der Ergebnisse der Konnektivitätstests:

  • Fehler aufgrund von Update

    Ursache: Der Cluster hat einen Job akzeptiert, der an den Dataproc-Dienst gesendet wurde, konnte aber nicht manuell oder durch Autoscaling skaliert werden. Dieser Fehler kann auch durch eine nicht standardmäßige Clusterkonfiguration verursacht werden.

    Lösung:

Tipps zur Fehlerbehebung bei Clustern

In diesem Abschnitt finden Sie zusätzliche Informationen zur Behebung häufiger Probleme, die die Erstellung von Dataproc-Clustern verhindern können.

Wenn die Bereitstellung eines Dataproc-Clusters fehlschlägt, wird häufig eine generische Fehlermeldung ausgegeben oder der Status PENDING oder PROVISIONING gemeldet, bevor der Fehler auftritt. Der Schlüssel zur Diagnose und Behebung von Clusterfehlern liegt in der Untersuchung von Clusterlogs und der Bewertung häufiger Fehlerpunkte.

Häufige Symptome und Fehlermeldungen

Im Folgenden finden Sie häufige Symptome und Fehlermeldungen, die mit Fehlern bei der Clustererstellung zusammenhängen:

  • Der Clusterstatus bleibt über einen längeren Zeitraum PENDING oder PROVISIONING.
  • Der Cluster wechselt in den Status ERROR.
  • Generische API-Fehler bei der Clustererstellung, z. B. Operation timed out.
  • Protokollierte oder API-Antwortfehlermeldungen wie:

    • RESOURCE_EXHAUSTED: in Bezug auf CPU-, Laufwerk- oder IP-Adresskontingente
    • Instance failed to start
    • Permission denied
    • Unable to connect to service_name.googleapis.com oder Could not reach required Google APIs
    • Connection refused oder network unreachable
    • Fehler im Zusammenhang mit fehlgeschlagenen Initialisierungsaktionen, z. B. Fehler bei der Skriptausführung und „Datei nicht gefunden“.

Cluster-Logs ansehen

Ein wichtiger erster Schritt bei der Diagnose von Fehlern bei der Clustererstellung ist die Überprüfung der detaillierten Clusterlogs, die in Cloud Logging verfügbar sind.

  1. Rufen Sie den Log-Explorer auf: Öffnen Sie den Log-Explorer in der Google Cloud Console.
  2. Nach Dataproc-Clustern filtern:
    • Wählen Sie im Drop-down-Menü Ressource die Option Cloud Dataproc Cluster aus.
    • Geben Sie Ihre cluster_name und project_id ein. Sie können auch nach location (Region) filtern.
  3. Logeinträge prüfen:
    • Suchen Sie nach Nachrichten auf ERROR- oder WARNING-Ebene, die kurz vor dem Zeitpunkt des Fehlers bei der Clustererstellung auftreten.
    • Achten Sie auf Logs von master-startup-, worker-startup- und agent-Komponenten, um Informationen zu Problemen auf VM-Ebene oder mit dem Dataproc-Agent zu erhalten.
    • Wenn Sie Informationen zu Problemen mit der VM-Startzeit erhalten möchten, filtern Sie die Logs nach resource.type="gce_instance" und suchen Sie nach Meldungen von den Instanznamen, die mit Ihren Clusterknoten verknüpft sind, z. B. CLUSTER_NAME-m oder CLUSTER_NAME-w-0. Serielle Konsolenlogs können Probleme mit der Netzwerkkonfiguration, Festplattenprobleme und Skriptfehler aufdecken, die früh im VM-Lebenszyklus auftreten.

Häufige Ursachen für Clusterfehler und Tipps zur Fehlerbehebung

In diesem Abschnitt werden häufige Gründe für das Fehlschlagen der Erstellung von Dataproc-Clustern beschrieben. Außerdem finden Sie Tipps zur Fehlerbehebung bei Clusterfehlern.

Unzureichende IAM-Berechtigungen

Das VM-Dienstkonto, das von Ihrem Dataproc-Cluster verwendet wird, muss die entsprechenden IAM-Rollen haben, um Compute Engine-Instanzen bereitzustellen, auf Cloud Storage-Buckets zuzugreifen, Logs zu schreiben und mit anderen Google Cloud -Diensten zu interagieren.

  • Erforderliche Worker-Rolle: Prüfen Sie, ob das VM-Dienstkonto die Rolle Dataproc-Worker (roles/dataproc.worker) hat. Diese Rolle hat die Mindestberechtigungen, die für Dataproc zum Verwalten von Clusterressourcen erforderlich sind.
  • Berechtigungen für den Datenzugriff: Wenn Ihre Jobs Daten aus Cloud Storage oder BigQuery lesen oder in Cloud Storage oder BigQuery schreiben, benötigt das Dienstkonto entsprechende Rollen wie Storage Object Viewer, Storage Object Creator oder Storage Object Admin für Cloud Storage oder BigQuery Data Viewer oder BigQuery Editor für BigQuery.
  • Logging-Berechtigungen: Das Dienstkonto muss eine Rolle mit den Berechtigungen haben, die zum Schreiben von Logs in Cloud Logging erforderlich sind, z. B. die Rolle Logging Writer.

Tipps zur Fehlerbehebung:

  • Dienstkonto identifizieren: Ermitteln Sie das VM-Dienstkonto, das für Ihren Cluster konfiguriert ist. Wenn nicht angegeben, wird standardmäßig das Compute Engine-Standarddienstkonto verwendet.

  • IAM-Rollen prüfen: Rufen Sie in der Google Cloud -Konsole die Seite IAM & Verwaltung > IAM auf, suchen Sie nach dem Dienstkonto der Cluster-VM und prüfen Sie, ob es die für Cluster-Vorgänge erforderlichen Rollen hat. Weisen Sie fehlende Rollen zu.

Ressourcenkontingente überschritten

Dataproc-Cluster nutzen Ressourcen von Compute Engine und anderen Google Cloud Diensten. Das Überschreiten von Projekt- oder regionalen Kontingenten kann zu Fehlern beim Erstellen von Clustern führen.

  • Häufige Dataproc-Kontingente, die Sie prüfen sollten:
    • CPUs (regional)
    • DISKS_TOTAL_GB (regional)
    • IN_USE_ADDRESSES (regional für interne IP-Adressen, global für externe IP-Adressen)
    • Dataproc API-Kontingente, z. B. ClusterOperationRequestsPerMinutePerProjectPerRegion .

Tipps zur Fehlerbehebung:

  • Kontingente ansehen: Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > IAM auf. Filtern Sie nach „Dienst“ für „Compute Engine API“ und „Dataproc API“.
  • Nutzung im Vergleich zum Limit prüfen: Ermitteln Sie alle Kontingente, die ihr Limit erreicht haben oder kurz davor stehen.
  • Fordern Sie bei Bedarf eine Kontingenterhöhung an.

Probleme mit der Netzwerkkonfiguration

Probleme mit der Netzwerkkonfiguration, z. B. eine falsche VPC-Netzwerk-, Subnetz-, Firewall- oder DNS-Konfiguration, sind eine häufige Ursache für Fehler beim Erstellen von Clustern. Clusterinstanzen müssen miteinander und mit Google-APIs kommunizieren können.

  • VPC-Netzwerk und Subnetz:
    • Prüfen Sie, ob das VPC-Netzwerk und das Subnetz des Clusters vorhanden und richtig konfiguriert sind.
    • Prüfen Sie, ob das Subnetz einen ausreichenden Bereich verfügbarer IP-Adressen hat.
  • Privater Google-Zugriff (Private Google Access, PGA): Wenn Cluster-VMs interne IP-Adressen haben und auf Google APIs für Cloud Storage, Cloud Logging und andere Vorgänge zugreifen müssen, prüfen Sie, ob privater Google-Zugriff für das Subnetzwerk aktiviert ist. Standardmäßig werden für Dataproc-Cluster, die mit Image-Versionen ab 2.2 erstellt werden, VMs mit ausschließlich internen IP-Adressen bereitgestellt, wobei der privater Google-Zugriff im regionalen Subnetz des Clusters aktiviert ist.
  • Private Service Connect (PSC): Wenn Sie über Private Service Connect auf Google APIs zugreifen, prüfen Sie, ob die erforderlichen Private Service Connect-Endpunkte für die Google APIs, von denen Dataproc abhängt, z. B. dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com und logging.googleapis.com, richtig konfiguriert sind. DNS-Einträge für die APIs müssen zu privaten IP-Adressen aufgelöst werden. Wenn Sie Private Service Connect verwenden, ist VPC-Peering für die Kommunikation mit anderen vom Kunden verwalteten VPC-Netzwerken weiterhin erforderlich.
  • VPC-Peering: Wenn Ihr Cluster mit Ressourcen in anderen VPC-Netzwerken kommuniziert, z. B. mit Hostprojekten einer freigegebenen VPC oder anderen VPCs von Kunden, prüfen Sie, ob das VPC-Peering richtig konfiguriert ist und Routen weitergegeben werden.
  • Firewallregeln:

    • Standardregeln: Prüfen Sie, ob Standardfirewallregeln wie allow-internal oder allow-ssh nicht zu restriktiv sind.
    • Benutzerdefinierte Regeln: Wenn benutzerdefinierte Firewallregeln vorhanden sind, prüfen Sie, ob sie die erforderlichen Kommunikationspfade zulassen:

      • Interne Kommunikation innerhalb des Clusters (zwischen -m- und -w-Knoten).
      • Ausgehender Traffic von Cluster-VMs zu Google APIs über öffentliche IPs oder ein Internetgateway, den privater Google-Zugriff oder Private Service Connect-Endpunkte.

      • Traffic zu externen Datenquellen oder Diensten, von denen Ihre Jobs abhängen.

  • DNS-Auflösung: Prüfen Sie, ob Clusterinstanzen DNS-Namen für Google-APIs und interne oder externe Dienste korrekt auflösen können.

Tipps zur Fehlerbehebung:

  • Netzwerkkonfiguration prüfen: Sehen Sie sich die VPC-Netzwerk- und Subnetzeinstellungen an, in denen der Cluster bereitgestellt wird.
  • Firewallregeln prüfen: Sehen Sie sich die Firewallregeln im VPC-Netzwerk oder im Hostprojekt der freigegebenen VPC an.
  • Konnektivität testen: Starten Sie eine temporäre Compute Engine-VM im Cluster-Subnetz und führen Sie die folgenden Schritte aus:
    • ping oder curl zu externen Google API-Domains wie storage.googleapis.com.
    • nslookup, um die DNS-Auflösung in die erwarteten IP-Adressen (privater Google-Zugriff oder Private Service Connect) zu überprüfen.
    • Führen Sie Google Cloud Konnektivitätstests aus, um Pfade von einer Test-VM zu relevanten Endpunkten zu diagnostizieren.

Fehler bei Initialisierungsaktionen

Dataproc-Initialisierungsaktionen sind Skripts, die während der Clustererstellung auf Cluster-VMs ausgeführt werden. Fehler in diesen Skripts können verhindern, dass der Cluster gestartet wird.

Tipps zur Fehlerbehebung:

  • Logs auf Fehler bei Initialisierungsaktionen prüfen: Suchen Sie in Cloud Logging nach Logeinträgen, die sich auf init-actions oder startup-script für die Clusterinstanzen beziehen.
  • Skriptpfade und Berechtigungen prüfen: Prüfen Sie, ob sich die Initialisierungsaktionsskripts an der richtigen Stelle in Cloud Storage befinden und ob das Dienstkonto der Cluster-VM die Rolle Storage Object Viewer hat, die zum Lesen von Cloud Storage-Skripts erforderlich ist.
  • Skriptlogik debuggen: Testen Sie die Skriptlogik auf einer separaten Compute Engine-VM, die die Clusterumgebung imitiert, um Fehler zu erkennen. Fügen Sie dem Skript ausführliche Protokollierung hinzu.

Regionale Ressourcenverfügbarkeit (nicht vorrätig)

Gelegentlich ist ein Maschinentyp oder eine Ressource in einer Region oder Zone vorübergehend nicht verfügbar (Fehlschlag). In der Regel führt dies zu RESOURCE_EXHAUSTED-Fehlern, die nicht mit Problemen mit dem Projektkontingent zusammenhängen.

Tipps zur Fehlerbehebung:

  • Andere Zone oder Region ausprobieren: Versuchen Sie, den Cluster in einer anderen Zone derselben Region oder in einer anderen Region zu erstellen.
  • Automatische Zonenplatzierung verwenden: Verwenden Sie das Dataproc-Feature zur automatischen Zonenplatzierung, um automatisch eine Zone mit Kapazität auszuwählen.
  • Maschinentyp anpassen: Wenn Sie einen benutzerdefinierten oder speziellen Maschinentyp verwenden, versuchen Sie es mit einem Standardmaschinentyp, um zu sehen, ob das Problem dadurch behoben wird.

Nächste Schritte

Wenn weiterhin Probleme mit Clusterfehlern auftreten:

  • Cloud Customer Care kontaktieren Beschreiben Sie das Problem mit dem Cluster und die Schritte, die Sie zur Fehlerbehebung unternommen haben. Geben Sie außerdem die folgenden Informationen an:
    • Clusterdiagnosedaten
    • Ausgabe des folgenden Befehls:
      gcloud dataproc clusters describe CLUSTER_NAME \
          -region=REGION
      
    • Logs für den fehlgeschlagenen Cluster wurden exportiert.