Risolvere i problemi di creazione del cluster

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

Messaggi di errore comuni relativi alla creazione di cluster

  • User not authorized to act as service account

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

    Soluzione: identifica l'utente o il service account che tenta di creare il cluster Dataproc. Concedi a questa entità il ruolo Utente account di servizio (roles/iam.serviceAccountUser) nel service account configurato per l'utilizzo del cluster (in genere, il service account VM Dataproc).

  • Operation timed out: Only 0 out of 2 minimum required datanodes/node managers running.

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

    Soluzione:

  • Required compute.subnetworks.use permission for projects/{projectId}/regions/{region}/subnetworks/{subnetwork}

    Causa: questo errore può verificarsi quando tenti di configurare un cluster Dataproc utilizzando una rete VPC in un altro progetto e il service account dell'agente di servizio Dataproc Service Agent non dispone delle autorizzazioni necessarie per il progetto VPC condiviso che ospita la rete.

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

  • The zone projects/zones/{zone} does not have enough resources available to fulfill the request (resource type:compute)

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

    Soluzione:

    • Utilizza la funzionalità di posizionamento della zona automatica di Dataproc per creare il cluster in una delle zone di una regione con risorse disponibili.
    • Crea il cluster in una zona diversa.
  • Errori di superamento quota

    Insufficient CPUS/CPUS_ALL_REGIONS quota
    Insufficient 'DISKS_TOTAL_GB' quota
    Insufficient 'IN_USE_ADDRESSES' quota

    Causa: la richiesta di CPU, dischi, o indirizzi IP supera la quota disponibile.

    Soluzione: richiedi una quota aggiuntiva dalla Google Cloud console.

  • Initialization action failed

    Causa: l'azione di inizializzazione fornita durante la creazione del cluster non è stata installata.

    Soluzione:

  • Failed to initialize node CLUSTER-NAME-m. ... See output in: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Causa: l'inizializzazione del nodo controller del cluster Dataproc non è riuscita.

    Soluzione:

  • Cluster creation failed: IP address space exhausted

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

    Soluzione:

    • Crea un cluster con meno 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 di indirizzi IP.
    • Attendi che sia disponibile spazio IP sufficiente sulla rete.
  • Initialization script error message: The repository REPO_NAME no longer has a Release file

    Causa: il repository di backport di 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 or Network is unreachable: dataproccontrol-REGION.googleapis.com

    Causa: questi messaggi di errore indicano che la configurazione di rete del cluster Dataproc è incompleta: potrebbero mancare la route al gateway internet predefinito o regole firewall.

    Soluzione:

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

    • Crea un test di connettività tra due VM del cluster Dataproc. 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 Dataproc e un indirizzo IP dell'API di controllo Dataproc corrente. Per ottenere un indirizzo IP dell'API di controllo Dataproc corrente, utilizza il seguente comando:
    dig dataproccontrol-REGION.googleapis.com A
    

    Utilizza uno degli indirizzi IPv4 nella sezione delle risposte dell'output.

    Il risultato del test di connettività 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 dei test di connettività:

  • Error due to update

    Causa: il cluster ha accettato un job inviato al servizio Dataproc, ma non è stato in grado di eseguire lo scale up o lo scale down manualmente o tramite la scalabilità automatica. Questo errore può essere causato anche da una configurazione del cluster non standard.

    Soluzione:

    • Reimpostazione del cluster: apri un ticket di assistenza, includi un file tar di diagnostica, e chiedi di reimpostare il cluster sullo stato RUNNING.

    • Nuovo cluster: ricrea il cluster con la stessa configurazione. Questa soluzione può essere più rapida di una reimpostazione fornita dall'assistenza.

Suggerimenti per la risoluzione dei problemi relativi ai cluster

Questa sezione fornisce ulteriori indicazioni sulla risoluzione dei problemi comuni che possono impedire la creazione di cluster Dataproc.

Quando il provisioning di un cluster Dataproc non riesce, 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 comuni

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

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

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

Esaminare i log del cluster

Un importante passaggio iniziale per la diagnosi degli errori di creazione del cluster è l'esame dei log dettagliati del cluster disponibili in Cloud Logging.

  1. Vai a Esplora log: apri Esplora log nella Google Cloud console.
  2. Filtra per i cluster Dataproc:
    • Nel menu a discesa Risorsa, seleziona Cloud Dataproc 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 prossimità dell'errore di 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 Dataproc.
    • Per informazioni sui problemi relativi al tempo di avvio della VM, filtra i log in base a resource.type="gce_instance" e cerca i messaggi dei 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 di script che si verificano all'inizio del ciclo di vita della VM.

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

Questa sezione illustra i motivi comuni per cui la creazione di cluster Dataproc potrebbe non riuscire e fornisce suggerimenti per la risoluzione dei problemi relativi agli errori dei cluster.

Autorizzazioni IAM insufficienti

Il service account VM utilizzato dal cluster Dataproc 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 Google Cloud servizi.

  • Ruolo Worker richiesto: verifica che il service account VM abbia il ruolo Worker Dataproc (roles/dataproc.worker). Questo ruolo dispone delle autorizzazioni minime richieste da Dataproc per gestire le risorse cluster.
  • Autorizzazioni di accesso ai dati: se i job leggono o scrivono in Cloud Storage o BigQuery, il service account necessita di ruoli correlati, ad esempio Storage Object Viewer, Storage Object Creator, o Storage Object Admin per Cloud Storage, oppure BigQuery Data Viewer o BigQuery Editor per BigQuery.
  • Autorizzazioni di logging: il service account 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:

Quote di risorse superate

I cluster Dataproc utilizzano le risorse di Compute Engine e di altri Google Cloud servizi. Il superamento delle quote di progetto o regionali può causare errori di creazione del cluster.

  • Quote Dataproc comuni da controllare:
    • CPUs (regione)
    • DISKS_TOTAL_GB (regione)
    • IN_USE_ADDRESSES (regione per gli IP interni, globale per gli IP esterni)
    • Quote API Dataproc, ad esempio ClusterOperationRequestsPerMinutePerProjectPerRegion

Suggerimenti per la risoluzione dei problemi:

  • Esamina le quote: vai alla pagina IAM e amministrazione > IAM nella Google Cloud console. Filtra per "Servizio" per "API Compute Engine" e "API Dataproc".
  • Controlla l'utilizzo rispetto al limite: identifica le quote che sono al limite o quasi.
  • Se necessario, richiedi un aumento della quota.

Problemi di configurazione della rete

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

  • Rete VPC e subnet:
    • 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 Dataproc creati con le versioni dell'immagine 2.2+ eseguono il provisioning delle VM con indirizzi IP solo interni con l'accesso privato Google abilitato nella subnet regionale del cluster.
  • Private Service Connect (PSC): se utilizzi Private Service Connect per accedere alle API di Google, verifica che gli endpoint Private Service Connect necessari siano configurati correttamente per le API di Google da cui dipende Dataproc, 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 le risorse in altre reti VPC, ad esempio progetti host VPC condiviso o altri VPC del cliente, verifica che il peering VPC sia configurato correttamente e che le route vengano propagate.
  • Regole firewall:

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

      • Comunicazione interna all'interno del 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 gli endpoint Private Service Connect.

      • Traffico verso eventuali 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.
  • Verifica 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 Google Cloud test di connettività per diagnosticare i percorsi da una VM di test agli endpoint pertinenti.

Errori delle azioni di inizializzazione

Le azioni di inizializzazione di Dataproc sono script che vengono 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 gli 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 nella posizione corretta in Cloud Storage e che il service account VM del cluster abbia il 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 di Compute Engine separata che simula l'ambiente del cluster per identificare gli errori. Aggiungi la registrazione dettagliata allo script.

Disponibilità delle risorse regionali (esaurimento scorte)

A volte, un tipo di macchina o una risorsa in una regione o zona subisce un'indisponibilità temporanea (esaurimento scorte). In genere, questo comporta errori RESOURCE_EXHAUSTED non correlati a problemi di quota del progetto.

Suggerimenti per la risoluzione dei problemi:

  • Prova 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 della zona automatica: utilizza la funzionalità di posizionamento della zona automatica di Dataproc per selezionare automaticamente una zona con capacità.
  • Modifica il tipo di macchina: se utilizzi un tipo di macchina personalizzato o specializzato, prova un tipo di macchina standard per verificare se il problema viene risolto.

Contattare 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 di 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 non riuscito.

Utilizzare lo strumento gcpdiag

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

Lo strumento gcpdiag ti aiuta a scoprire i seguenti problemi di creazione del cluster Dataproc eseguendo i seguenti controlli:

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

Per un elenco dei passaggi di creazione del cluster gcpdiag, consulta Passaggi potenziali.

Eseguire il comando gcpdiag

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

Google Cloud Console

  1. Completa e copia il seguente comando.
  2. gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Apri la Google Cloud console 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 di diagnostica. 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 workstation locale.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Esegui il comando gcpdiag.
    ./gcpdiag runbook dataproc/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 Dataproc 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 Dataproc di destinazione nel progetto
      • service_account: il service account VM del cluster Dataproc
      • subnetwork: il percorso URI completo della subnet del cluster Dataproc
      • internal_ip_only: True o False
      • cross_project: l'ID tra progetti se il cluster Dataproc utilizza un service account VM in un altro progetto

Flag utili:

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

Passaggi successivi