Questa pagina mostra come risolvere i problemi relativi a Batch.
Se stai tentando di risolvere un problema per un job per il quale non è stato visualizzato un messaggio di errore, controlla se la cronologia del job contiene messaggi di errore visualizzando gli eventi di stato prima di esaminare il documento.
Per ulteriori informazioni sulla risoluzione dei problemi di un job, consulta anche i seguenti documenti:
Errori di creazione del job
Se non riesci a creare un job, la causa potrebbe essere uno degli errori in questa sezione.
Quota insufficiente
Problema
Quando provi a creare un job, si verifica uno dei seguenti problemi:
Quando il job è nello stato
QUEUED
, nel campostatusEvents
viene visualizzato il seguente problema:Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
Questo problema indica che il job è stato ritardato perché l'utilizzo attuale (
QUOTA_USAGE
) e il limite (QUOTA_LIMIT
) della quota diQUOTA_NAME
hanno impedito l'utilizzo richiesto del job (WANT_QUOTA
).Quando il job è negli stati
QUEUED
,SCHEDULED
oFAILED
, viene visualizzato uno dei seguenti problemi nel campostatusEvents
:RESOURCE_NAME creation failed: Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
RESOURCE_NAME creation failed: Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
Questo problema indica che la creazione di una risorsa non è riuscita perché la richiesta ha superato la quota
QUOTA_NAME
, che ha un limite diQUOTA_LIMIT
nella località specificata.
Soluzione
Per risolvere il problema:
Se il job è stato ritardato, prova ad attendere il rilascio di una maggiore quota.
Se il job non è riuscito a causa di una quota insufficiente o se i ritardi persistono, prova a evitare una quota insufficiente procedendo in uno dei seguenti modi:
Crea job che utilizzano una quota minore o diversa. Ad esempio, specifica una località consentita o un tipo di risorsa diverso per il job oppure suddividi l'utilizzo della quota tra altri progetti.
Richiedi a Google Cloud un limite di quota più elevato per il tuo progetto.
Per ulteriori informazioni, consulta Quote e limiti batch e Utilizzare le quote.
Autorizzazioni insufficienti per agire come account di servizio
Problema
Quando provi a creare un job, si verifica il seguente problema:
Se il job non utilizza un modello di istanza, il problema si verifica come segue:
caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
Se il job utilizza un modello di istanza, il problema si presenta come segue:
Error: code - CODE_SERVICE_ACCOUNT_MISMATCH, description - The service account specified in the instance template INSTANCE_TEMPLATE_SERVICE_ACCOUNT doesn't match the service account specified in the job JOB_SERVICE_ACCOUNT for JOB_UID, project PROJECT_NUMBER
In genere questo problema si verifica perché l'utente che crea il job non dispone delle autorizzazioni sufficienti per agire come account di servizio utilizzato dal job, che è controllata dall'autorizzazione iam.serviceAccounts.actAs
.
Soluzione
Per risolvere il problema:
- Se il job utilizza un modello di istanza, verifica che l'account di servizio specificato nel modello di istanza corrisponda all'account di servizio specificato nella definizione del job.
- Assicurati che all'utente che sta creando il job sia stato concesso il ruolo Utente account di servizio (
roles/iam.serviceAccountUser
) per l'account di servizio specificato per il job. Per maggiori informazioni, consulta Gestire l'accesso. - Ricrea il job.
Reti ripetute
Problema
Quando provi a creare un job, si verifica il seguente problema:
Networks must be distinct for NICs in the same InstanceTemplate
Questo problema si verifica perché hai specificato la rete per un job più di una volta.
Soluzione
Per risolvere il problema, ricrea il job e specifica la rete utilizzando una delle seguenti opzioni:
- Modello di istanza VM: se vuoi utilizzare un modello di istanza VM durante la creazione di questo job, devi specificare la rete nel modello di istanza VM.
network
esubnetwork
campi: Questi campi possono essere utilizzati nel corpo della richiesta quando crei un job utilizzando l'API batch o nel file di configurazione dell'interfaccia a riga di comando JSON quando crei un job con gcloud CLI.- Flag
--network
e--subnetwork
:questi flag possono essere utilizzati con il comandogcloud batch jobs submit
quando crei un job mediante gcloud CLI.
Per ulteriori informazioni, consulta Specifica della rete per un job.
Rete non valida per i Controlli di servizio VPC
Problema
Quando provi a creare un job, si verifica il seguente problema:
no_external_ip_address field is invalid. VPC Service Controls is enabled for the project, so external ip address must be disabled for the job. Please set no_external_ip_address field to be true
Soluzione
Questo problema si verifica perché stai tentando di creare ed eseguire un job con VM con indirizzi IP esterni in un perimetro di servizio dei Controlli di servizio VPC.
Per risolvere il problema, crea un job che blocchi l'accesso esterno per tutte le VM.
Per ulteriori informazioni su come configurare il networking per un job in un perimetro di servizio dei Controlli di servizio VPC, consulta Utilizzare i Controlli di servizio VPC con Batch.
Errori di job non riusciti
Se hai problemi con un job che non è in esecuzione correttamente o non è riuscito per motivi poco chiari, potrebbero essere dovuti a uno degli errori in questa sezione o a uno dei codici di uscita nella seguente sezione Codici di uscita per errori delle attività.
Nessun log in Cloud Logging
Problema
Devi eseguire il debug di un job, ma non vengono visualizzati log per il job in Cloud Logging.
Questo problema si verifica spesso per i seguenti motivi:
- L'API Cloud Logging non è abilitata per il tuo progetto. Anche se configuri correttamente tutti gli altri elementi per i log di un job, non produrrà log se il servizio non è abilitato per il tuo progetto.
- L'account di servizio del job non ha l'autorizzazione per scrivere log. Un job non può produrre log senza autorizzazioni sufficienti.
- Il job non è stato configurato per produrre i log. Per generare log in Cloud Logging, un job deve avere Cloud Logging abilitato. Gli elementi eseguibili del job devono anche essere configurati in modo da scrivere le informazioni da visualizzare nei log per i flussi di output standard (stdout) e di errore standard (stderr). Per ulteriori informazioni, consulta Analizzare un job utilizzando i log.
- Le attività non sono state eseguite. I log non possono essere generati finché alle attività non vengono assegnate le risorse e non vengono eseguite.
Soluzione
Per risolvere il problema:
- Assicurati che l'API Cloud Logging sia abilitata per il tuo progetto.
- Assicurati che l'account di servizio per il job disponga del ruolo IAM Writer log (
roles/logging.logWriter
). Per maggiori informazioni, consulta Abilitare batch per un progetto. - Visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch.
I dettagli del job possono aiutarti a capire perché il job non ha prodotto log e potrebbero fornire le informazioni che speravi di ottenere dai log. Ad esempio, segui questi passaggi:
- Per verificare che il logging sia abilitato, esamina il campo
logsPolicy
del job. - Per verificare che il job sia stato eseguito correttamente, rivedi il campo
status
del job.
- Per verificare che il logging sia abilitato, esamina il campo
Nessun agente di servizio che segnala
Problema
Il seguente problema viene visualizzato nel campo statusEvents
per un job che non viene eseguito correttamente o non è riuscito prima della creazione delle VM:
No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start
Il problema indica che nessuna delle VM di un job segnala l'agente di servizio batch.
Questo problema si verifica spesso per i seguenti motivi:
- Le VM del job non hanno autorizzazioni sufficienti.
Le VM di un job richiedono autorizzazioni specifiche per segnalare il proprio stato all'agente di servizio batch. Puoi fornire queste autorizzazioni per le VM di un job concedendo il ruolo Reporter agente batch (
roles/batch.agentReporter
) all'account di servizio del job. - Le VM del job presentano problemi di rete. Le VM di un job richiedono l'accesso alla rete per comunicare con l'agente di servizio Batch.
- Le VM del job utilizzano un'immagine del sistema operativo VM Batch obsoleta o un'immagine del sistema operativo VM con un software agente di servizio Batch obsoleto. Le VM del job richiedono un software nella relativa immagine del sistema operativo VM che fornisca le dipendenze attuali per i report all'agente di servizio batch.
Soluzione
Per risolvere il problema:
Verifica che le VM del job dispongano delle autorizzazioni necessarie per segnalare il proprio stato all'agente di servizio Batch.
- Per identificare l'account di servizio del job, visualizza i dettagli del job utilizzando gcloud CLI o l'API Batch. Se non è elencato alcun account di servizio, per impostazione predefinita il job utilizza l'account di servizio predefinito di Compute Engine.
Conferma che l'account di servizio del job disponga delle autorizzazioni per il ruolo Reporter agente batch (
roles/batch.agentReporter
). Per ulteriori informazioni, consulta Gestione dell'accesso e Limitazione dell'utilizzo degli account di servizio.Ad esempio, per concedere all'account di servizio predefinito di Compute Engine le autorizzazioni richieste, utilizza questo comando:
gcloud projects add-iam-policy-binding \ --role roles/batch.agentReporter \ --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Sostituisci PROJECT_NUMBER con il numero di progetto.
Verifica che le VM del job abbiano un accesso alla rete corretto. Per maggiori informazioni, consulta la pagina Panoramica del networking in batch e Risolvere i problemi di networking comuni.
Se hai specificato l'immagine del sistema operativo VM per il job, verifica che l'immagine del sistema operativo VM sia attualmente supportata.
Se hai abilitato Cloud Logging per il job, puoi identificare il problema verificando la presenza di uno dei seguenti log degli agenti (
batch_agent_logs
). Per ulteriori informazioni, consulta Analizzare un job utilizzando i log.Registra errore software obsoleto dell'agente di servizio Batch:
rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
BATCH_AGENT_VERSION è la versione del software per la comunicazione con l'agente di servizio Batch utilizzato dal job, ad esempio
cloud-batch-agent_20221103.00_p00
.Registra errore immagine del sistema operativo Batch VM obsoleta:
rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
BATCH_VM_OS_IMAGE_NAME è la versione specifica di un'immagine del sistema operativo VM di Batch utilizzata dal job, ad esempio
batch-debian-11-20220909-00-p00
.
Puoi risolvere il problema utilizzando un'immagine del sistema operativo VM più recente. Se il job utilizza un'immagine personalizzata, ricreala in base a una delle versioni più recenti di un'immagine pubblica supportata.
Per maggiori informazioni, consulta Immagini VM supportate del sistema operativo e Visualizzare le immagini del sistema operativo delle VM.
Ricrea il job.
Vincolo violato per gli indirizzi IP esterni della VM
Problema
Il seguente problema viene visualizzato nel campo statusEvents
per un job non riuscito:
Instance VM_NAME creation failed: Constraint constraints/compute.vmExternalIpAccess violated for project PROJECT_NUMBER. Add instance VM_NAME to the constraint to use external IP with it.
Questo problema si verifica perché il progetto, la cartella o l'organizzazione ha impostato il vincolo dei criteri dell'organizzazione compute.vmExternalIpAccess
in modo che solo le VM incluse nella lista consentita possano utilizzare indirizzi IP esterni.
Soluzione
Per risolvere il problema, ricrea il job ed esegui una delle seguenti operazioni:
- Utilizza un progetto esente dal vincolo.
- Crea un job che blocchi l'accesso esterno per tutte le VM.
Vincolo violato per le immagini attendibili
Problema
Il seguente problema viene visualizzato nel campo statusEvents
per un job non riuscito:
Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.
Soluzione
Questo problema si verifica perché il progetto ha impostato il vincolo per il criterio delle immagini attendibili (compute.trustedImageProjects
) in modo che non siano consentite le immagini di Batch, che si trovano nel progetto di immagini batch-custom-image
.
Per risolvere il problema, esegui almeno una delle seguenti operazioni:
- Ricrea il job per specificare un'immagine del sistema operativo VM già consentita dal vincolo del criterio per le immagini attendibili.
- Chiedi all'amministratore di consentire la modifica del vincolo criteri per l'utilizzo di immagini attendibili per consentire le immagini del sistema operativo VM del progetto di immagini
batch-custom-image
. Per le istruzioni, consulta Controllare l'accesso alle immagini del sistema operativo VM per Batch.
Job non riuscito durante l'utilizzo di un modello di istanza
Problema
Il seguente problema viene visualizzato nel campo statusEvents
per un job non riuscito che utilizza un modello di istanza:
INVALID_FIELD_VALUE,BACKEND_ERROR
Questo problema si verifica a causa di problemi non chiari con il modello di istanza del job.
Soluzione
Per eseguire ulteriormente il debug del problema:
- Crea un gruppo di istanze gestite utilizzando il modello di istanza e controlla se si verificano errori con ulteriori dettagli.
(Facoltativo) Per provare a trovare ulteriori informazioni, consulta l'operazione a lunga esecuzione che crea il gruppo di istanze gestite nella console Google Cloud.
Codici di uscita per errori delle attività
Quando un'attività specifica in un job ha esito negativo, restituisce un codice di uscita diverso da zero.
A seconda di come configuri il campo ignoreExitStatus
, un'attività non riuscita potrebbe causare o meno l'esito negativo di un job.
Oltre ai codici di uscita che definisci in un elemento eseguibile, un batch ha diversi codici di uscita riservati, inclusi i seguenti codici di uscita.
Prerilascio delle VM (50001)
Problema
Nel campo statusEvents
di un job viene visualizzato il seguente problema:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.
Questo problema si verifica quando una VM spot per il job viene prerilasciata durante il tempo di esecuzione.
Soluzione
Per risolvere il problema, esegui una delle seguenti operazioni:
- Riprova a eseguire l'attività utilizzando i nuovi tentativi delle attività automatizzate o eseguendo di nuovo il job manualmente.
- Per garantire l'assenza di prerilascio, utilizza invece le VM con il modello di provisioning standard.
Timeout report VM (50002)
Problema
Nel campo statusEvents
di un job viene visualizzato il seguente problema:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Batch no longer receives VM updates with exit code 50002.
Questo problema si verifica quando si verifica un timeout nel backend a causa del quale una VM per il job non riceve più aggiornamenti.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.
VM riavviata durante l'esecuzione (50003)
Problema
Nel campo statusEvents
di un job viene visualizzato il seguente problema:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is rebooted during task execution with exit code 50003.
Questo problema si verifica quando una VM per un job si riavvia inaspettatamente durante il tempo di esecuzione.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.
La VM e l'attività non rispondono (50004)
Problema
Nel campo statusEvents
di un job viene visualizzato il seguente problema:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to tasks cannot be canceled with exit code 50004.
Questo problema si verifica quando un'attività raggiunge il limite di tempo che non risponde e non può essere annullata.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.
L'attività viene eseguita oltre il tempo di esecuzione massimo (50005)
Problema
Nel campo statusEvents
di un job viene visualizzato il seguente problema:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to task runs over the maximum runtime with exit code 50005.
Questo problema si verifica nei seguenti casi:
- Il tempo di esecuzione di un'attività supera il limite di tempo specificato nel campo
maxRunDuration
- Il tempo di esecuzione di un elemento eseguibile supera il limite di tempo specificato nel campo
timeout
Per identificare nello specifico quale limite di tempo è stato superato, visualizza i log del job e trova un log che menzioni il codice di uscita 50005
. Questo campo textPayload
del log indica dove e quando è stato superato il limite di tempo.
Soluzione
Per risolvere il problema, prova a verificare il tempo di esecuzione totale richiesto dall'attività o dall'elemento eseguibile che ha superato il limite di tempo. Quindi, esegui una delle seguenti operazioni:
Se ti aspetti questo errore solo occasionalmente, ad esempio per un'attività o quando è eseguibile con un tempo di esecuzione incoerente, puoi provare a ricreare il job e configurarlo in modo che automatizza i nuovi tentativi dell'attività per cercare di aumentare la percentuale di successo.
In caso contrario, se l'esecuzione dell'attività o dell'esecuzione costante e intenzionale ha bisogno di più tempo per essere completato rispetto a quanto consentito dal timeout attuale, imposta un timeout più lungo.
VM ricreata durante l'esecuzione (50006)
Problema
Nel campo statusEvents
di un job viene visualizzato il seguente problema:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is recreated during task execution with exit code 50006.
Questo problema si verifica quando una VM per un job viene ricreata inaspettatamente durante il tempo di esecuzione.
Soluzione
Per risolvere il problema, riprova a eseguire l'attività utilizzando i nuovi tentativi automatici delle attività o eseguendo di nuovo il job manualmente.