Cette page vous explique comment résoudre les problèmes liés à Batch.
Si vous essayez de dépanner une tâche que vous n'avez pas un message d'erreur, vérifiez si l'historique du job contient les messages d'erreur en consultant les événements d'état ; avant de consulter ce document.
Pour en savoir plus sur le dépannage d'une tâche, consultez également documents:
Erreurs lors de la création d'offres d'emploi
Si vous ne parvenez pas à créer un job, cela peut être dû à l'une des erreurs présentées dans cette section.
Quota insuffisant
Problème
L'un des problèmes suivants se produit lorsque vous essayez de créer une tâche:
Lorsque le job se trouve dans État
QUEUED
, le problème suivant apparaît ChampstatusEvents
: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.].
Ce problème indique que la tâche a été retardée en raison du utilisation actuelle (
QUOTA_USAGE
) et limite (QUOTA_LIMIT
) d'un quota deQUOTA_NAME
a empêché l'accès utilisation demandée (WANT_QUOTA
).Lorsque le poste est en cours États
QUEUED
,SCHEDULED
ouFAILED
, l'un des problèmes suivants ChampstatusEvents
: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
Ce problème indique que la création d'une ressource a échoué, car a dépassé votre quota de
QUOTA_NAME
, ce qui est limité àQUOTA_LIMIT
dans le à l'emplacement spécifié.
Solution
Pour identifier le problème, procédez comme suit :
Si la tâche a été retardée, essayez d'attendre qu'un quota supplémentaire soit libéré.
Si le job échoue en raison d'un quota insuffisant ou si ces retards persistent, essayez d'éviter un quota insuffisant en procédant de l'une des façons suivantes:
Créez des jobs qui utilisent une quantité inférieure de ce quota ou un quota différent. Par exemple, spécifiez un autre emplacement ou type de ressource autorisé pour ou répartir l'utilisation du quota entre plusieurs projets.
Demandez à Google Cloud une limite de quota plus élevée pour votre projet.
Pour en savoir plus, consultez Quotas et limites par lot Utiliser des quotas
Autorisations insuffisantes pour agir en tant que compte de service
Problème
Le problème suivant se produit lorsque vous essayez de créer une tâche:
Si le job n'utilise pas de modèle d'instance, le problème apparaît comme suit:
caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
Si le job utilise un modèle d'instance, le problème apparaît comme suit:
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
Ce problème se produit généralement parce que l'utilisateur qui crée le job n'a pas
des autorisations suffisantes pour agir en tant
que compte de service utilisé par le job,
qui est contrôlé par
Autorisation iam.serviceAccounts.actAs
.
Solution
Pour identifier le problème, procédez comme suit :
- Si le job utilise un modèle d'instance, vérifiez que le compte de service spécifié dans le modèle d'instance correspond au compte de service spécifié dans la définition du job.
- Assurez-vous que l'utilisateur qui crée le job a bien été autorisé
Rôle Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service spécifié pour la tâche. Pour en savoir plus, consultez Gérer l'accès - Recréez le job.
Réseaux répétés
Problème
Le problème suivant se produit lorsque vous essayez de créer une tâche:
Networks must be distinct for NICs in the same InstanceTemplate
Ce problème est dû au fait que vous avez spécifié le réseau pour une tâche plusieurs fois.
Solution
Pour résoudre le problème, recréez le job et spécifiez le réseau à l'aide de la commande l'une des options suivantes:
- VM instance template (Modèle d'instance de VM) : si vous souhaitez utiliser un modèle d'instance de VM lors de la création de ce job, vous devez spécifier le réseau dans le modèle d'instance de VM.
- Champs
network
etsubnetwork
: Ces champs peuvent être utilisés dans le corps de la requête lorsque vous créez une tâche à l'aide de la propriété Batch ou dans le fichier de configuration JSON lorsque vous créez à l'aide de la gcloud CLI. - Indicateurs
--network
et--subnetwork
: Ces options peuvent être utilisées avec la commandegcloud batch jobs submit
lorsque vous créez un job à l'aide de gcloud CLI.
Pour en savoir plus, consultez Spécifiez le réseau pour une tâche.
Réseau non valide pour VPC Service Controls
Problème
Le problème suivant se produit lorsque vous essayez de créer une tâche:
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
Solution
Ce problème survient lorsque vous essayez de créer et d'exécuter un job avec des VM disposant d'adresses IP externes appartenant à un périmètre de service VPC Service Controls.
Pour résoudre le problème, Créez une tâche qui bloque l'accès externe pour toutes les VM.
Pour en savoir plus sur la configuration de la mise en réseau pour un job dans un le périmètre de service VPC Service Controls, consultez la page Utiliser VPC Service Controls avec Batch.
Problèmes liés aux jobs et erreurs d'échec
Si vous rencontrez des problèmes avec un job qui ne s'exécute pas correctement ou qui a échoué pour raisons peu claires, cela peut être dû à l'une des erreurs de cette section. ou l'un des codes de sortie suivants : Section Codes de sortie en cas d'échec de la tâche.
Aucun journal dans Cloud Logging
Problème
Vous devez déboguer un job, mais aucun journal ne s'affiche pour celui-ci dans Cloud Logging.
Ce problème survient souvent pour les raisons suivantes:
- L'API Cloud Logging n'est pas activée pour votre projet. Même si vous configurez correctement tout le reste pour les journaux d'un job, il ne produira pas de journaux si le service n'est pas activé pour votre projet.
- Le compte de service du job n'est pas autorisé à écrire journaux. Une tâche ne peut pas générer de journaux sans autorisations suffisantes.
- Le job n'a pas été configuré pour générer des journaux. Pour générer des journaux dans Cloud Logging, Cloud Logging doit être activé pour un job. Le poste les exécutables doivent également être configurés pour écrire toutes les informations que vous souhaitez apparaissent dans les journaux vers la sortie standard (stdout) et flux d'erreur standard (stderr). Pour en savoir plus, consultez Analyser une tâche à l'aide de journaux
- Les tâches n'ont pas été exécutées. Les journaux ne peuvent pas être produits tant que les tâches n'ont pas été les ressources attribuées et démarrer l'exécution.
- Cloud Logging a été configuré de manière à exclure automatiquement les journaux du job. Les journaux des jobs Batch ne peuvent pas s'afficher si vous avez configuré Filtres d'exclusion pour Cloud Logging entraînant l'exclusion des journaux des jobs Batch.
Solution
Pour résoudre ce problème, procédez comme suit :
- Assurez-vous que les journaux n'ont pas été automatiquement exclus de Cloud Logging en désactivant filtres d'exclusion pour Cloud Logging.
- Assurez-vous que l'API Cloud Logging est activée pour votre projet.
- Assurez-vous que le compte de service associé à la tâche dispose du rôle
Rôle IAM Rédacteur de journaux (
roles/logging.logWriter
). Pour en savoir plus, consultez Activez Batch pour un projet. - Affichez les détails de la tâche à l'aide de gcloud CLI ou de l'API Batch.
Les détails de l'offre peuvent vous aider à comprendre pourquoi l'emploi n'a pas été trouvé
génèrent des journaux et peuvent fournir
les informations dont vous espériez obtenir
à partir des journaux. Par exemple:
- Pour vérifier que la journalisation est activée, consultez les
Champ
logsPolicy
. - Pour vérifier que l'exécution de la tâche s'est bien terminée, consultez les
Champ
status
.
- Pour vérifier que la journalisation est activée, consultez les
Champ
Après avoir apporté des modifications, recréez le job et attendez qu'il se termine avant de vérifier les journaux.
Aucun reporting d'agent de service
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un job qui ne s'exécute pas correctement ou qui a échoué avant la création des VM:
No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start
Le problème indique qu'aucune VM d'un job ne transmet de rapport au Agent de service Batch.
Ce problème survient souvent pour les raisons suivantes:
- Les VM de la tâche ne disposent pas des autorisations nécessaires.
Les VM d'un job nécessitent des autorisations spécifiques pour communiquer leur état au
Agent de service Batch. Vous pouvez fournir ces autorisations
pour les VM d'un job en accordant
Rôle Responsable du signalement de l'agent Batch (
roles/batch.agentReporter
) au compte de service de la tâche. - Les VM de la tâche présentent des problèmes de réseau. Les VM d'un job nécessitent un réseau pour communiquer avec l'agent de service Batch.
- Les VM du job utilisent une image d'OS de VM par lot obsolète ou utilisent une image d'OS de VM avec un logiciel d'agent de service Batch obsolète. Les VM du job nécessitent un logiciel dans leur image d'OS de VM qui fournit le les dépendances actuelles afin de communiquer Agent de service Batch.
Solution
Pour identifier le problème, procédez comme suit :
Vérifier que les VM du job disposent des autorisations nécessaires pour signaler leur état à l'agent de service Batch.
- Pour identifier le compte de service du job, Affichez les détails de la tâche à l'aide de gcloud CLI ou de l'API Batch. Si aucun compte de service n'est répertorié, le job utilise l'API Compute Engine le compte de service par défaut.
Vérifiez que le compte de service du job dispose des autorisations nécessaires Rôle de responsable du signalement de l'agent Batch (
roles/batch.agentReporter
). Pour en savoir plus, consultez Gérer l'accès et Restreindre l'utilisation des comptes de service.Par exemple, pour accorder au de service Compute Engine par défaut les autorisations requises, exécutez la commande suivante:
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/batch.agentReporter \ --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Remplacez PROJECT_NUMBER par votre numéro de projet.
- Remplacez PROJECT_ID par l'ID de votre projet.
Vérifiez que les VM du job disposent d'un accès réseau approprié. Pour en savoir plus, consultez Présentation de la mise en réseau par lot Résolvez les problèmes réseau courants.
Si vous avez spécifié l'image d'OS de VM pour le job, vérifiez que le L'image de l'OS de VM est actuellement compatible.
Si vous avez activé Cloud Logging pour ce job, vous pouvez et identifiez ce problème en vérifiant les éléments suivants : journaux de l'agent (
batch_agent_logs
). Pour en savoir plus, consultez Analyser un job à l'aide des journauxJournal pour l'erreur logicielle obsolète de l'agent de service Batch:
rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
BATCH_AGENT_VERSION est la version logicielle pour avec l'agent de service Batch (par exemple,
cloud-batch-agent_20221103.00_p00
).Journal de l'erreur d'image d'OS de VM par lot obsolète:
rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
Le BATCH_VM_OS_IMAGE_NAME est la version spécifique d'un Image d'OS de VM de Batch utilisée par le job, par exemple
batch-debian-11-20220909-00-p00
.
Vous pouvez résoudre ce problème en utilisant une image d'OS de VM plus récente. Si le job utilise une image personnalisée, recréez l'image personnalisée en fonction de la dernière version d'une image publique compatible.
Pour en savoir plus, consultez la page Images d'OS de VM compatibles. et afficher les images d'OS des VM.
Recréez le job.
Métriques sur les ressources manquantes dans Cloud Monitoring
Problème
Vous souhaitez Afficher les métriques sur les ressources d'une tâche mais il manque une partie ou la totalité des métriques attendues.
Ce problème survient souvent pour les raisons suivantes:
- L'API n'a pas été activée pour votre projet. Même si vous configurez correctement tout le reste dans votre projet, les ressources Les métriques peuvent ne pas s'afficher tant que l'API Cloud Monitoring n'est pas activée. Pour l'agent Ops, vous devez également activer l'API Cloud Logging.
- Vous ne disposez pas des autorisations nécessaires pour afficher les métriques. Vous ne pouvez pas consulter les métriques sans autorisations suffisantes.
- Les VM du job ne se sont pas exécutées. Impossible de produire des métriques pour un job jusqu'à ce qu'au moins une des VM du job soit en cours d'exécution.
- La configuration ou les autorisations du job n'étaient pas compatibles avec les métriques de l'agent Ops. Certaines métriques liées aux ressources ne peuvent être fournies que par l'agent Ops. Pour faciliter les opérations d'agent : un job doit répondre aux exigences de l'agent Ops, installer l'agent Ops et utiliser un compte de service capable d'écrire des métriques Surveillance.
- Vous devez utiliser une autre méthode ou un autre filtre pour afficher les métriques. Certaines méthodes d'affichage des métriques n'affichent pas les métriques des VM après que celles-ci sont supprimés. En outre, les métriques ne s'affichent pas si elles sont omises par les filtres. ou la période affichée. De plus, les graphiques de métriques disposent qui peuvent rendre de petites quantités de données trop fines pour être affichées.
- Les métriques ont été supprimées. Vous ne pouvez pas afficher les métriques après leur suppression. qui intervient automatiquement après la période de conservation périodes.
Solution
Si seules des métriques de l'agent Ops sont manquantes, essayez d'abord de résoudre le problème en procédant comme suit : suivantes:
- Vérifiez la configuration du job en procédant comme suit:
- Pour afficher toutes les informations de configuration du job, Affichez les détails de la tâche à l'aide de gcloud CLI ou de l'API Batch. Utiliser la sortie pour les étapes restantes.
- Assurez-vous que le compte de service du job dispose du rôle autorisations permettant d'écrire des métriques de l'agent Ops.
- Assurez-vous que le job respecte toutes les Conditions requises pour l'Agent Ops
- Assurez-vous que le job installe correctement l'agent Ops. Même s'il s'agit
d'installer manuellement l'agent Ops dans un environnement exécutable,
la méthode recommandée consiste à installer automatiquement l'agent Ops
en paramétrant le
Champ
installOpsAgent
àtrue
.
- Si le problème persiste, consultez la page Résoudre les problèmes liés à l'agent Ops dans la documentation Google Cloud Observability.
Sinon, procédez comme suit pour résoudre le problème:
- Assurez-vous que l'API Monitoring est activée pour votre projet:
- Assurez-vous que les VM du job ont commencé à s'exécuter et que l'exécution est toujours dans la Surveiller les durées de conservation Vous pouvez consulter la durée d'exécution du job afficher les détails de la tâche.
- Vérifiez que les méthodes que vous utilisez pour l'affichage ne présentent aucun problème
en procédant comme suit:
- À moins que vous ne souhaitiez afficher les métriques des ressources en cours d'exécution uniquement, assurez-vous que vous consultez les métriques à l'aide de l'Explorateur de métriques ou d'un créé à partir de graphiques de l'explorateur de métriques. D'autres méthodes, telles que que les tableaux de bord Compute Engine, qui ont été supprimées.
- Vérifiez que la propriété période de diffusion inclut la durée d'exécution du job. Pour les graphiques, assurez-vous également que le résolution du graphique est approprié pour vos données.
- Assurez-vous de n'avoir filtres qui masquent les données.
- Si le problème persiste, consultez la Résoudre les problèmes liés à Cloud Monitoring dans la documentation Google Cloud Observability.
Contrainte non respectée pour les adresses IP externes de VM
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour une tâche ayant échoué:
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.
Ce problème survient, car votre projet, dossier ou organisation a défini le
Contrainte des règles d'administration compute.vmExternalIpAccess
afin que seules les VM figurant sur la liste d'autorisation puissent utiliser des adresses IP externes.
Solution
Pour résoudre le problème, recréez le job et effectuez l'une des opérations suivantes:
- Utilisez un projet exempt de la contrainte.
- Créez un job qui bloque l'accès externe pour toutes les VM.
Contrainte non respectée pour les images de confiance
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour une tâche ayant échoué:
Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.
Solution
Ce problème survient, car votre projet a défini
Contrainte de règle relative aux images de confiance (compute.trustedImageProjects
)
afin que les images provenant de Batch,
Les projets d'images batch-custom-image
ne sont pas autorisés.
Pour résoudre le problème, effectuez au moins l'une des opérations suivantes:
- Recréez le job pour spécifier une image d'OS de VM. qui est déjà autorisée par la contrainte de la règle des images de confiance.
- Demandez à votre administrateur d'autoriser la modification du
de règle relative aux images de confiance pour autoriser les images d'OS de VM à partir du
Projet d'images
batch-custom-image
. Pour savoir comment procéder, consultez Contrôlez l'accès aux images d'OS de VM pour Batch.
Échec du job lors de l'utilisation d'un modèle d'instance
Problème
Le problème suivant apparaît dans le
Champ statusEvents
Pour une tâche en échec qui utilise un modèle d'instance:
INVALID_FIELD_VALUE,BACKEND_ERROR
Ce problème est dû à des problèmes peu clairs avec le modèle d'instance du job.
Solution
Pour déboguer le problème, procédez comme suit:
- Créer un MIG à l'aide du modèle d'instance et observez si des erreurs se produisent avec plus de détails.
Facultatif: Pour essayer de trouver plus d'informations, consultez la opération de longue durée qui crée le MIG dans la console Google Cloud.
Codes de sortie d'échec de la tâche
Lorsqu'une tâche spécifique d'une tâche échoue, la tâche renvoie une valeur différente de zéro
code de sortie.
Selon la configuration du
Champ ignoreExitStatus
,
une tâche en échec peut
entraîner l'échec d'une tâche.
En plus de tous les codes de sortie que vous définissez dans un exécutable, Batch inclut plusieurs codes de sortie réservés, y compris les les codes de sortie suivants.
Préemption de VM (50001)
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un emploi:
Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.
Ce problème se produit lorsqu'une VM Spot pour le job est préempté pendant l'exécution.
Solution
Pour résoudre le problème, effectuez l'une des opérations suivantes:
- Relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.
- Pour garantir l'absence de préemption, utilisez des VM avec le paramètre standard de provisionnement.
Délai avant expiration des rapports de la VM (50002)
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un emploi:
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.
Ce problème se produit lorsqu'un dépassement de délai dans le backend a entraîné VM de la tâche pour ne plus recevoir de mises à jour.
Solution
Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.
La VM a redémarré pendant l'exécution (50003)
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un emploi:
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.
Ce problème se produit lorsqu'une VM associée à un job redémarre de manière inattendue pendant l'exécution.
Solution
Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.
La VM et la tâche ne répondent pas (50004)
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un emploi:
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.
Ce problème se produit lorsqu'une tâche atteint la limite de temps sans réponse et ne peut pas être annulée.
Solution
Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.
La tâche s'exécute sur la durée d'exécution maximale (50005)
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un emploi:
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.
Ce problème survient dans les cas suivants:
- La durée d'exécution d'une tâche dépasse la limite de temps spécifiée dans le
Champ
maxRunDuration
- La durée d'exécution d'un exécutable dépasse la limite de temps spécifiée dans
Champ
timeout
Pour identifier précisément
le délai qui a été dépassé,
Afficher les journaux de la tâche
et recherchez un journal qui mentionne le code de sortie 50005
. Ce champ "textPayload
"
de ce journal indique où et quand la limite de temps a été dépassée.
Solution
Pour résoudre le problème, vérifiez la durée d'exécution totale requise la tâche ou l’exécutable qui a dépassé le délai imparti. Effectuez l'une des opérations suivantes :
Si vous ne vous attendez à recevoir cette erreur qu'occasionnellement, par exemple pour une tâche ou un exécutable avec une exécution incohérente, vous pouvez essayer de recréer le job et configurer pour automatiser les nouvelles tentatives pour essayer d'augmenter le taux de réussite.
Sinon, si la tâche ou l’exécutable a besoin de manière cohérente et intentionnelle plus de temps que le délai d'inactivité actuel permet d'exécuter l'exécution, Définissez un délai d'inactivité plus long.
VM recréée pendant l'exécution (50006)
Problème
Le problème suivant apparaît dans le
Champ statusEvents
pour un emploi:
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.
Ce problème se produit lorsqu'une VM est recréée de manière inattendue pour un job pendant l'exécution.
Solution
Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.