Cette page vous explique comment résoudre les problèmes liés à Batch.
Si vous essayez de résoudre un problème pour une tâche pour laquelle vous n'avez pas de message d'erreur, vous devez la décrire à l'aide de la CLI gcloud ou de l'API Batch et vérifier si le champ statusEvents
contient des messages d'erreur avant d'examiner ce document.
Pour en savoir plus sur le dépannage d'une tâche, consultez également la page Quotas et limites.
Erreurs de création de tâche
Si vous ne parvenez pas à créer une tâche, cela peut être dû à l'une des erreurs de cette section.
Quota insuffisant
Problème
L'un des problèmes suivants se produit lorsque vous essayez de créer une tâche:
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
Solution
Ce problème indique qu'une demande de ressources dépasse votre quota.
Pour résoudre le problème, attendez qu'un quota soit libéré ou demandez une limite de quota plus élevée. Pour en savoir plus, consultez les pages Quotas et limites de traitement par lot et Demander un quota supérieur.
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 la tâche n'utilise pas de modèle d'instance, le problème se présente comme suit:
caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
Si la tâche utilise un modèle d'instance, le problème se présente 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
Solution
Ce problème se produit généralement lorsque l'utilisateur qui crée la tâche ne dispose pas des autorisations suffisantes pour agir en tant que compte de service utilisé par la tâche, ce qui est contrôlé par l'autorisation iam.serviceAccounts.actAs
.
Pour identifier le problème, procédez comme suit :
- Si la tâche 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 de la tâche.
- Assurez-vous que l'utilisateur qui crée la tâche a reçu le 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 la tâche.
Erreurs liées à l'échec de la tâche
Si vous rencontrez des problèmes avec une tâche qui ne s'exécute pas correctement ou échoue pour des raisons peu claires, cela peut être dû à l'une des erreurs de cette section.
Aucun journal dans Cloud Logging
Problème
Vous devez déboguer une tâche, mais aucun journal n'apparaît pour Cloud Logging.
Solution
Ce problème survient souvent pour les raisons suivantes:
- La tâche n'a pas été configurée pour générer des journaux. Pour que vous puissiez générer des journaux dans Cloud Logging, Cloud Logging doit être activé pour une tâche. Les exécutables de la tâche doivent également être configurés pour écrire les informations que vous souhaitez afficher dans les journaux sur les flux de sortie standards (stdout) et les flux d'erreur standards (stderr). Pour en savoir plus, consultez la page Analyser une tâche à l'aide de journaux.
- Les tâches n'ont pas été exécutées. Les journaux ne peuvent pas être générés tant que les tâches n'ont pas reçu de ressources et que leur exécution n'a pas commencé.
Pour résoudre le problème, décrivez la tâche à l'aide de gcloud CLI ou de l'API Batch.
Plus précisément, le champ status
de la tâche fournit des informations que vous pouvez utiliser pour déboguer la tâche. En outre, décrire la tâche peut vous aider à comprendre pourquoi elle n'a pas généré de journaux.
Aucun rapport d'agent
Problème
Le problème suivant apparaît dans le champ statusEvents
d'une tâche qui ne s'exécute pas correctement ou 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 de la tâche n'est transmise à l'agent de service Batch.
Solution
Ce problème survient souvent pour les raisons suivantes:
- Les VM de la tâche ne disposent pas des autorisations nécessaires.
Plus précisément, ce problème suggère que les VM de la tâche ne disposent pas des autorisations nécessaires pour signaler leur état à l'agent de service Batch. Les VM d'une tâche peuvent obtenir ces autorisations en attribuant le rôle de rapporteur d'agent par lot (
roles/batch.agentReporter
) au compte de service de la tâche. - Les VM de la tâche ont des problèmes de réseau. Les VM de la tâche ne peuvent pas signaler de résultat à l'agent de service par lot en raison d'un problème réseau.
Pour identifier le problème, procédez comme suit :
Vérifiez que les VM de la tâche disposent des autorisations nécessaires pour signaler leur état à l'agent de service Batch.
- Pour identifier le compte de service de la tâche, décrivez la tâche à l'aide de gcloud CLI ou de Batch API. Si aucun compte de service n'est répertorié, la tâche utilise le compte de service Compute Engine par défaut.
Vérifiez que le compte de service de la tâche dispose des autorisations pour le rôle Reporter d'agent par lot (
roles/batch.agentReporter
). Pour en savoir plus, consultez Gérer les accès et Restreindre l'utilisation du compte de service.Par exemple, pour accorder au compte de service Compute Engine par défaut les autorisations requises, utilisez la commande suivante:
gcloud projects add-iam-policy-binding / --role roles/batch.agentReporter / --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Remplacez PROJECT_NUMBER par le numéro de votre projet.
Si les VM de la tâche disposent déjà d'autorisations suffisantes, vérifiez qu'elles disposent d'un accès réseau approprié. Pour en savoir plus, consultez Résoudre les problèmes de réseau courants.
Recréez la tâche.
Contrainte de non-respect des adresses IP externes des VM
Problème
Le problème suivant apparaît dans le champ statusEvents
d'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.
Solution
Ce problème est dû au fait que votre projet ou votre organisation a défini la contrainte de règle d'administration compute.vmExternalIpAccess
pour n'autoriser que les VM sur liste d'autorisation à utiliser des adresses IP externes.
Pour résoudre le problème, recréez la tâche et effectuez l'une des opérations suivantes:
- Utilisez un projet exempt de la contrainte.
- Désactivez les adresses IP externes des VM de la tâche. Pour ce faire, vous devez définir le champ
noExternalIpAddress
de la tâche surfalse
et configurer la VM de la tâche afin qu'elle puisse accéder aux services Google Cloud sans adresse IP externe. Pour configurer les VM afin qu'elles puissent accéder aux services Google Cloud sans adresse IP externe, configurez Cloud NAT avec Compute Engine pour votre réseau VPC et configurez un accès privé.
Échec de la tâche lors de l'utilisation d'un modèle d'instance
Problème
Le problème suivant apparaît dans le champ statusEvents
d'une tâche en échec utilisant un modèle d'instance:
INVALID_FIELD_VALUE,BACKEND_ERROR
Solution
Ce problème est dû à des problèmes peu clairs avec le modèle d'instance de la tâche.
Pour résoudre le problème, procédez comme suit:
- Créez un MIG à l'aide du modèle d'instance et observez si des erreurs se produisent avec plus de détails.
Facultatif: Pour obtenir plus d'informations, consultez l'opération de longue durée qui crée le MIG dans Google Cloud Console.