Risolvere i problemi di creazione del cluster

Questo documento spiega i messaggi di errore comuni relativi alla creazione dei cluster e fornisce suggerimenti sulla risoluzione dei problemi di creazione dei cluster.

Messaggi di errore comuni relativi alla creazione dei cluster

  • Utente non autorizzato ad agire come service account

    Causa: l'entità che tenta di creare il cluster Managed Service for Apache Spark non dispone delle autorizzazioni necessarie per utilizzare il account di servizio specificato. Gli utenti di Managed Service for Apache Spark devono disporre dell'autorizzazione ActAs del service account per eseguire il deployment delle risorse di Managed Service for Apache Spark; questa autorizzazione è inclusa nel ruolo Utente account di servizio (roles/iam.serviceAccountUser) (consulta Ruoli di Managed Service for Apache Spark).

    Soluzione: identifica l'utente o il service account che sta tentando di creare il cluster Managed Service for Apache Spark. Concedi a questa entità il ruolo Utente service account (roles/iam.serviceAccountUser) nel account di servizio che il cluster è configurato per utilizzare (in genere, il service account della VM di Managed Service for Apache Spark).

  • Operazione scaduta: sono in esecuzione solo 0 dei 2 nodi dati/gestori di nodi minimi richiesti.

    Causa: il nodo controller non è in grado di creare il cluster perché non può comunicare con i nodi worker.

    Soluzione:

  • Autorizzazione compute.subnetworks.use obbligatoria per projects/{projectId}/regions/{region}/subnetworks/{subnetwork}

    Causa: questo errore può verificarsi quando tenti di configurare un cluster Managed Service for Apache Spark utilizzando una rete VPC in un altro progetto e il account di servizio agente di servizio di Managed Service for Apache Spark non dispone delle autorizzazioni necessarie nel progetto VPC condiviso che ospita la rete.

    Soluzione: segui i passaggi elencati in Crea un cluster che utilizza una rete VPC in un altro progetto.

  • La zona projects/zones/{zone} non dispone di risorse sufficienti per soddisfare la richiesta (resource type:compute)

    Causa: la zona utilizzata per creare il cluster non dispone di risorse sufficienti.

    Soluzione:

    • Utilizza la funzionalità di posizionamento automatico della zona di Managed Service for Apache Spark per creare il cluster in una qualsiasi delle zone di una regione con risorse disponibili.
    • Crea il cluster in un'altra zona.
  • Errori di superamento quota

    Quota CPUS/CPUS_ALL_REGIONS insufficiente
    Quota "DISKS_TOTAL_GB" insufficiente
    Quota "IN_USE_ADDRESSES" insufficiente

    Causa: la richiesta di CPU, disco o indirizzo IP supera la quota disponibile.

    Soluzione: richiedi una quota aggiuntiva dalla consoleGoogle Cloud .

  • Azione di inizializzazione non riuscita

    Causa: l'installazione dell'azione di inizializzazione fornita durante la creazione del cluster non è riuscita.

    Soluzione:

  • Impossibile inizializzare il nodo CLUSTER-NAME-m. … Visualizza l'output in: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Causa: impossibile inizializzare il nodo del controller del cluster Managed Service for Apache Spark.

    Soluzione:

  • Creazione del cluster non riuscita: spazio degli indirizzi IP esaurito

    Causa: lo spazio degli indirizzi IP necessario per eseguire il provisioning dei nodi del cluster richiesti non è disponibile.

    Soluzione:

    • Crea un cluster con un numero inferiore di nodi worker, ma con un tipo di macchina più grande.
    • Crea un cluster su una subnet o una rete diversa.
    • Riduci l'utilizzo della rete per liberare spazio per gli indirizzi IP.
    • Attendi che sia disponibile spazio IP sufficiente sulla rete.
  • Messaggio di errore dello script di inizializzazione: il repository REPO_NAME non ha più un file Release

    Causa: il repository di backport Debian oldstable è stato eliminato.

    Soluzione:

    Aggiungi il seguente codice prima del codice che esegue apt-get nello script di inizializzazione.

    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
    
  • Timeout waiting for instance DATAPROC_CLUSTER_VM_NAME to report in o Network is unreachable: dataproccontrol-REGION.googleapis.com

    Causa: questi messaggi di errore indicano che la configurazione di rete del cluster Managed Service for Apache Spark è incompleta: potrebbe mancare la route al gateway internet predefinito o le regole firewall.

    Soluzione:

    Per risolvere il problema, puoi creare i seguenti test di connettività:

    • Crea un test di connettività tra due VM del cluster Managed Service for Apache Spark. Il risultato di questo test ti aiuterà a capire se le regole firewall di autorizzazione in entrata o in uscita della tua rete si applicano correttamente alle VM del cluster.
    • Crea un test di connettività tra una VM del cluster Managed Service for Apache Spark e un indirizzo IP dell'API di controllo di Managed Service for Apache Spark attuale. Per ottenere un indirizzo IP dell'API di controllo di Managed Service for Apache Spark corrente, utilizza il seguente comando:
    dig dataproccontrol-REGION.googleapis.com A
    

    Utilizza uno degli indirizzi IPv4 nella sezione della risposta dell'output.

    Il risultato dei Connectivity Tests ti aiuterà a capire se la route al gateway internet predefinito e il firewall di autorizzazione in uscita sono configurati correttamente.

    In base ai risultati di Connectivity Tests:

  • Errore dovuto all'aggiornamento

    Causa: il cluster ha accettato un job inviato al servizio Managed Service for Apache Spark, ma non è stato possibile fare lo scale up o lo scale down manualmente o tramite la scalabilità automatica. Questo errore può anche essere causato da una configurazione del cluster non standard.

    Soluzione:

    • Ripristino del cluster: apri un ticket di assistenza, includi un file tar di diagnostica e chiedi di ripristinare lo stato IN ESECUZIONE del cluster.

    • Nuovo cluster: ricrea il cluster con la stessa configurazione. Questa soluzione può essere più rapida di un reset fornito dall'assistenza.

Suggerimenti per la risoluzione dei problemi del cluster

Questa sezione fornisce indicazioni aggiuntive sulla risoluzione dei problemi comuni che possono impedire la creazione di cluster Managed Service for Apache Spark.

Quando il provisioning di un cluster Managed Service for Apache Spark non va a buon fine, spesso viene generato un messaggio di errore generico o viene segnalato uno stato PENDING o PROVISIONING prima dell'errore. La chiave per diagnosticare e risolvere i problemi di errore del cluster è esaminare i log del cluster e valutare i punti di errore comuni.

Sintomi più comuni

Di seguito sono riportati i sintomi comuni associati agli errori di creazione dei cluster:

  • Lo stato del cluster rimane PENDING o PROVISIONING per un periodo di tempo prolungato.
  • Il cluster passa allo stato ERROR.
  • Errori generici dell'API durante la creazione del cluster, ad esempio Operation timed out.
  • Messaggi di errore registrati o di risposta dell'API, ad esempio:

    • RESOURCE_EXHAUSTED: relative alle quote di CPU, disco o indirizzi IP
    • Instance failed to start
    • Permission denied
    • Unable to connect to service_name.googleapis.com o Could not reach required Google APIs
    • Connection refused o network unreachable
    • Errori relativi a errori delle azioni di inizializzazione, ad esempio errori di esecuzione degli script e file non trovato.

Esamina i log del cluster

Un passaggio iniziale importante per diagnosticare gli errori di creazione dei cluster è esaminare i log dettagliati dei cluster disponibili in Cloud Logging.

  1. Vai a Esplora log: apri Esplora log nella console Google Cloud .
  2. Filtra per i cluster Managed Service for Apache Spark:
    • Nel menu a discesa Risorsa, seleziona Cloud Managed Service for Apache Spark Cluster.
    • Inserisci cluster_name e project_id. Puoi anche filtrare per location (regione).
  3. Esamina le voci di log:
    • Cerca i messaggi di livello ERROR o WARNING che si verificano in un momento vicino a quello della mancata creazione del cluster.
    • Presta attenzione ai log dei componenti master-startup, worker-startup e agent per informazioni sui problemi a livello di VM o dell'agente Managed Service for Apache Spark.
    • Per informazioni sui problemi relativi al tempo di avvio delle VM, filtra i log in base a resource.type="gce_instance" e cerca i messaggi dai nomi delle istanze associati ai nodi del cluster, ad esempio CLUSTER_NAME-m o CLUSTER_NAME-w-0. I log della console seriale possono rivelare problemi di configurazione di rete, problemi del disco ed errori degli script che si verificano nelle prime fasi del ciclo di vita della VM.

Cause comuni di errori del cluster e suggerimenti per la risoluzione dei problemi

Questa sezione illustra i motivi più comuni per cui la creazione di un cluster Managed Service for Apache Spark potrebbe non riuscire e fornisce suggerimenti per la risoluzione dei problemi relativi ai cluster.

Autorizzazioni IAM insufficienti

Il service account VM utilizzato dal cluster Managed Service for Apache Spark deve disporre dei ruoli IAM appropriati per eseguire il provisioning delle istanze Compute Engine, accedere ai bucket Cloud Storage, scrivere log e interagire con altri servizi Google Cloud .

  • Ruolo Worker obbligatorio: verifica che il account di servizio della VM abbia il ruolo Managed Service for Apache Spark Worker (roles/dataproc.worker). Questo ruolo dispone delle autorizzazioni minime richieste per Managed Service for Apache Spark per gestire le risorse del cluster.
  • Autorizzazioni di accesso ai dati: se i tuoi job leggono o scrivono su Cloud Storage o BigQuery, il account di servizio deve disporre dei ruoli correlati, ad esempio Storage Object Viewer, Storage Object Creator o Storage Object Admin per Cloud Storage o BigQuery Data Viewer o BigQuery Editor per BigQuery.
  • Autorizzazioni di logging: il account di servizio deve avere un ruolo con le autorizzazioni necessarie per scrivere i log in Cloud Logging, ad esempio il ruolo Logging Writer.

Suggerimenti per la risoluzione dei problemi:

  • Identifica il account di servizio: determina il service account VM che il cluster è configurato per utilizzare. Se non viene specificato, il valore predefinito è il service account predefinito di Compute Engine.

  • Verifica i ruoli IAM: vai alla pagina IAM e amministrazione > IAM nella console Google Cloud , trova il account di servizio della VM del cluster e verifica che disponga dei ruoli necessari per le operazioni del cluster. Concedi i ruoli mancanti.

Quote delle risorse superate

I cluster Managed Service for Apache Spark utilizzano risorse di Compute Engine e di altri servizi Google Cloud . Il superamento delle quote di progetto o regionali può causare errori di creazione del cluster.

  • Quote di Managed Service for Apache Spark comuni da controllare:
    • CPUs (regione)
    • DISKS_TOTAL_GB (regione)
    • IN_USE_ADDRESSES (regionale per gli IP interni, globale per gli IP esterni)
    • Quote dell'API Dataproc, ad esempio ClusterOperationRequestsPerMinutePerProjectPerRegion

Suggerimenti per la risoluzione dei problemi:

  • Esamina le quote: vai alla pagina IAM e amministrazione > IAM nella console Google Cloud . Filtra per "Servizio" in "API Compute Engine" e "API Dataproc".
  • Confronta l'utilizzo con il limite: identifica le quote che hanno raggiunto o stanno per raggiungere i limiti.
  • Se necessario, richiedi un aumento della quota.

Problemi di configurazione di rete

I problemi di configurazione di rete, come una configurazione errata della rete VPC, della subnet, del firewall o del DNS, sono una causa comune degli errori di creazione dei cluster. Le istanze del cluster devono essere in grado di comunicare tra loro e con le API di Google.

  • Rete e subnet VPC:
    • Verifica che la rete VPC e la subnet del cluster esistano e siano configurate correttamente.
    • Verifica che la subnet abbia un intervallo sufficiente di indirizzi IP disponibili.
  • Accesso privato Google (PGA): se le VM del cluster hanno indirizzi IP interni e devono raggiungere le API di Google per Cloud Storage, Cloud Logging e altre operazioni, verifica che l'accesso privato Google sia abilitato nella subnet. Per impostazione predefinita, i cluster Managed Service for Apache Spark creati con versioni immagine 2.2 e successive eseguono il provisioning di VM con indirizzi IP solo interni con l'accesso privato Google abilitato sulla subnet regionale del cluster.
  • Private Service Connect (PSC): se utilizzi Private Service Connect per accedere alle API di Google, verifica che gli endpoint di Private Service Connect necessari siano configurati correttamente per le API di Google da cui dipende Managed Service for Apache Spark, ad esempio dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com e logging.googleapis.com. Le voci DNS per le API devono essere risolte in indirizzi IP privati. Tieni presente che l'utilizzo di Private Service Connect non elimina la necessità di utilizzare il peering VPC per comunicare con altre reti VPC gestite dal cliente.
  • Peering VPC: se il cluster comunica con risorse in altre reti VPC, ad esempio progetti host VPC condivisi o altri VPC dei clienti, verifica che il peering VPC sia configurato correttamente e che le route vengano propagate.
  • Regole firewall:

    • Regole predefinite: verifica che le regole firewall predefinite, come allow-internal o allow-ssh, non siano eccessivamente restrittive.
    • Regole personalizzate: se sono presenti regole firewall personalizzate, verifica che consentano i percorsi di comunicazione necessari:

      • Comunicazione interna al cluster (tra i nodi -m e -w).
      • Traffico in uscita dalle VM del cluster alle API di Google, utilizzando IP pubblici o un gateway internet, l'accesso privato Google o endpoint Private Service Connect.

      • Traffico verso origini dati o servizi esterni da cui dipendono i job.

  • Risoluzione DNS: verifica che le istanze del cluster possano risolvere correttamente i nomi DNS per le API di Google e per eventuali servizi interni o esterni.

Suggerimenti per la risoluzione dei problemi:

  • Esamina la configurazione di rete: controlla le impostazioni della rete VPC e della subnet in cui viene eseguito il deployment del cluster.
  • Controlla le regole firewall: esamina le regole firewall nella rete VPC o nel progetto host VPC condiviso.
  • Testa la connettività: avvia una VM di Compute Engine temporanea nella subnet del cluster ed esegui i seguenti passaggi:
    • ping o curl ai domini delle API di Google esterni, ad esempio storage.googleapis.com.
    • nslookup per verificare la risoluzione DNS agli indirizzi IP previsti (accesso privato Google o Private Service Connect).
    • Esegui i test di connettività di Google Cloud per diagnosticare i percorsi da una VM di test agli endpoint pertinenti.

Errori delle azioni di inizializzazione

Le azioni di inizializzazione di Managed Service for Apache Spark sono script eseguiti sulle VM del cluster durante la creazione del cluster. Gli errori in questi script possono impedire l'avvio del cluster.

Suggerimenti per la risoluzione dei problemi:

  • Esamina i log per individuare errori delle azioni di inizializzazione: cerca le voci di log relative a init-actions o startup-script per le istanze del cluster in Cloud Logging.
  • Controlla i percorsi e le autorizzazioni degli script: verifica che gli script delle azioni di inizializzazione si trovino correttamente in Cloud Storage e che l'account di servizio della VM del cluster disponga del ruolo Storage Object Viewer necessario per leggere gli script di Cloud Storage.
  • Esegui il debug della logica dello script: testa la logica dello script su una VM Compute Engine separata che imita l'ambiente del cluster per identificare gli errori. Aggiungi il logging dettagliato allo script.

Disponibilità delle risorse regionali (esaurimenti)

Occasionalmente, un tipo di macchina o una risorsa in una regione o zona diventa temporaneamente non disponibile (esaurimento delle scorte). In genere, questo comporta errori RESOURCE_EXHAUSTED non correlati a problemi di quota del progetto.

Suggerimenti per la risoluzione dei problemi:

  • Prova con una zona o una regione diversa: prova a creare il cluster in una zona diversa all'interno della stessa regione o in una regione diversa.
  • Utilizza il posizionamento automatico della zona: utilizza la funzionalità di posizionamento automatico della zona di Managed Service for Apache Spark per selezionare automaticamente una zona con capacità.
  • Modifica il tipo di macchina: se utilizzi un tipo di macchina personalizzata o specializzata, prova un tipo di macchina standard per vedere se il problema si risolve.

Contatta l'assistenza clienti Google Cloud

Se continui a riscontrare problemi di errore del cluster, contatta l'assistenza clienti Google Cloud. Descrivi il problema di errore del cluster e i passaggi per la risoluzione dei problemi eseguiti. Inoltre, fornisci le seguenti informazioni:

  • Dati di diagnostica del cluster
  • Output del seguente comando:
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      
  • Log esportati per il cluster con errori.

Utilizza lo strumento gcpdiag

gcpdiag è uno strumento open source. Non è un prodotto Google Cloud ufficialmente supportato. Puoi utilizzare lo strumento gcpdiag per identificare e risolvere i problemi del progetto Google Cloud. Per saperne di più, consulta il progetto gcpdiag su GitHub.

Lo strumento gcpdiag ti aiuta a scoprire i seguenti problemi di creazione dei cluster Managed Service for Apache Spark eseguendo i seguenti controlli:

  • Errori di esaurimento delle risorse: valuta i log di Esplora log per rilevare gli esaurimenti delle risorse nelle regioni e nelle zone.
  • Quota insufficiente: controlla la disponibilità della quota nel progetto del cluster Managed Service for Apache Spark.
  • Configurazione di rete incompleta: esegue test di connettività di rete, inclusi i controlli per le regole firewall necessarie e la configurazione degli IP esterni e interni. Se il cluster è stato eliminato, lo strumento gcpdiag non può eseguire un controllo della connessione di rete.
  • Configurazione tra progetti errata: controlla i service account tra progetti ed esamina i ruoli aggiuntivi e l'applicazione delle policy dell'organizzazione.
  • Ruoli IAM della rete Virtual Private Cloud condivisa mancanti: se il cluster Managed Service for Apache Spark utilizza una rete VPC condiviso, verifica l'aggiunta dei ruoli dei service account richiesti.
  • Errori delle azioni di inizializzazione: valuta i log di Esplora log per rilevare errori e timeout degli script delle azioni di inizializzazione.

Per un elenco dei passaggi di gcpdiag Dataproc, inclusi i passaggi di creazione del cluster, consulta Passaggi di Managed Service for Apache Spark.

Esegui il comando gcpdiag

Puoi eseguire il comando gcpdiag da Cloud Shell nella consoleGoogle Cloud o all'interno di un container Docker.

ConsoleGoogle Cloud

  1. Completa e poi copia il seguente comando.
  2. gcpdiag runbook managed-spark/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Apri la console Google Cloud e attiva Cloud Shell.
  4. Apri la console Cloud
  5. Incolla il comando copiato.
  6. Esegui il comando gcpdiag, che scarica l'immagine Docker gcpdiag, quindi esegue i controlli diagnostici. Se applicabile, segui le istruzioni di output per correggere i controlli non riusciti.

Docker

Puoi eseguire gcpdiag utilizzando un wrapper che avvia gcpdiag in un container Docker. Docker o Podman devono essere installati.

  1. Copia ed esegui il seguente comando sulla tua workstation locale.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Esegui il comando gcpdiag.
    ./gcpdiag runbook managed-spark/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

Visualizza i parametri disponibili per questo runbook.

Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto contenente la risorsa
    • CLUSTER_NAME: il nome del cluster Managed Service for Apache Spark di destinazione nel progetto
    • OPTIONAL_PARAMETERS: aggiungi uno o più dei seguenti parametri facoltativi. Questi parametri sono obbligatori se il cluster è stato eliminato.
      • cluster_uuid: l'UUID del cluster Managed Service for Apache Spark di destinazione nel tuo progetto
      • service_account: il service account VM del cluster Managed Service for Apache Spark
      • subnetwork: il percorso URI completo della subnet del cluster Managed Service for Apache Spark
      • internal_ip_only: Vero o falso
      • cross_project: l'ID tra progetti se il cluster Managed Service for Apache Spark utilizza un account di servizio VM in un altro progetto

Flag utili:

Per un elenco e una descrizione di tutti i flag dello strumento gcpdiag, consulta le istruzioni per l'utilizzo di gcpdiag.

Passaggi successivi