Solução de problemas

Nesta página, mostramos como resolver problemas com o Batch.

Se você estiver tentando resolver problemas de um job sem uma mensagem de erro, exiba eventos de status antes de consultar este documento para verificar se o histórico do job contém mensagens de erro.

Para mais informações sobre como resolver problemas de um job, consulte também os seguintes documentos:

Erros de criação de jobs

Se não for possível criar um job, talvez seja devido a um dos erros nesta seção.

Cota insuficiente

Problema

Quando você tenta criar um job, um dos seguintes problemas ocorre:

  • Quando o job está no estado QUEUED, o seguinte problema aparece no campo statusEvents:

    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.].
    

    Esse problema indica que o job foi adiado porque o uso atual (QUOTA_USAGE) e o limite (QUOTA_LIMIT) da cota QUOTA_NAME impediram o uso solicitado do job (WANT_QUOTA).

  • Quando o job está nos estados QUEUED, SCHEDULED ou FAILED, um dos seguintes problemas aparece no campo statusEvents:

    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
    

    Esse problema indica que a criação de um recurso falhou porque a solicitação excedeu sua cota de QUOTA_NAME, que tem um limite de QUOTA_LIMIT no local especificado.

Solução

Para resolver o problema, faça o seguinte:

  • Se o job atrasou, tente aguardar mais cota ser liberada.

  • Se o job falhar devido à cota insuficiente ou se esses atrasos persistirem, tente evitar cota insuficiente fazendo o seguinte:

    • Crie jobs que usam menos dessa cota ou uma cota diferente. Por exemplo, especifique um local ou tipo de recurso permitido diferente para o job ou divida o uso da cota em outros projetos.

    • Solicite um limite de cota maior para seu projeto do Google Cloud.

Para mais informações, consulte Cotas e limites de lote e Trabalhar com cotas.

Permissões insuficientes para atuar como a conta de serviço

Problema

O seguinte problema ocorre quando você tenta criar um job:

  • Se o job não usar um modelo de instância, o problema aparecerá assim:

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • Se o job usar um modelo de instância, o problema aparecerá assim:

    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
    

Esse problema geralmente ocorre porque o usuário que cria o job não tem permissões suficientes para atuar como a conta de serviço usada pelo job, o que é controlado pela permissão iam.serviceAccounts.actAs.

Solução

Para resolver o problema, faça o seguinte:

  1. Se o job usar um modelo de instância, verifique se a conta de serviço especificada no modelo corresponde à conta de serviço especificada na definição do job.
  2. Verifique se o usuário que está criando o job recebeu o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço especificada para o job. Para mais informações, consulte Gerenciar acesso.
  3. Recrie o job.

Redes repetidas

Problema

O seguinte problema ocorre quando você tenta criar um job:

Networks must be distinct for NICs in the same InstanceTemplate

Esse problema ocorre porque você especificou a rede para um job mais de uma vez.

Solução

Para resolver o problema, recrie o job e especifique a rede usando uma das opções a seguir:

Para mais informações, consulte Especificar a rede para um job.

Rede inválida para o VPC Service Controls

Problema

O seguinte problema ocorre quando você tenta criar um job:

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

Solução

Esse problema ocorre porque você está tentando criar e executar um job com VMs que têm endereços IP externo em um perímetro de serviço do VPC Service Controls.

Para resolver o problema, crie um job que bloqueie o acesso externo a todas as VMs.

Para mais informações sobre como configurar a rede para um job em um perímetro de serviço do VPC Service Controls, consulte Usar VPC Service Controls com o Batch.

Erros de falha no job

Se você tiver problemas com um job que não está sendo executado corretamente ou falhou por motivos pouco claros, pode ser devido a um dos erros nesta seção ou a um dos códigos de saída na seção Códigos de saída de falha de tarefa a seguir.

Nenhum registro no Cloud Logging

Problema

Você precisa depurar um job, mas nenhum registro é exibido para o job no Cloud Logging.

Esse problema geralmente ocorre pelos seguintes motivos:

  • A API Cloud Logging não está ativada para seu projeto. Mesmo que você configure corretamente todo o restante para os registros de um job, ele não produzirá registros se o serviço não estiver ativado para o projeto.
  • A conta de serviço do job não tem permissão para gravar registros. Um job não pode produzir registros sem permissões suficientes.
  • O job não foi configurado para produzir registros. Para produzir registros no Cloud Logging, o job precisa ter o Cloud Logging ativado. Os executáveis do job também precisam ser configurados para gravar qualquer informação que você queira que apareça nos registros nos fluxos de saída padrão (stdout) e erro padrão (stderr). Para mais informações, consulte Analisar um job usando registros.
  • As tarefas não foram executadas. Os registros não podem ser produzidos até que os recursos tenham recursos atribuídos e comecem a ser executados.

Solução

Para resolver esse problema, faça o seguinte:

  1. Verifique se a API Cloud Logging está ativada para seu projeto.
  2. Verifique se a conta de serviço do job tem o papel do IAM de Gravador de registros (roles/logging.logWriter). Para mais informações, consulte Ativar o Batch para um projeto.
  3. Visualize os detalhes do job usando a CLI gcloud ou a API Batch. Os detalhes do job podem ajudar você a entender por que ele não produziu registros e podem fornecer as informações que você esperava receber com base neles. Por exemplo, faça o seguinte:
    1. Para verificar se a geração de registros está ativada, revise o campo logsPolicy do job.
    2. Para verificar se o job foi executado com sucesso, revise o campo status do job.

Nenhum relatório do agente de serviço

Problema

O problema a seguir aparece no campo statusEvents de um job que não está sendo executado corretamente ou falhou antes da criação das VMs:

No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start

O problema indica que nenhuma das VMs de um job está se reportando ao agente de serviço em lote.

Esse problema geralmente ocorre pelos seguintes motivos:

  • As VMs do job não têm permissões suficientes. As VMs de um job exigem permissões específicas para informar o estado ao agente de serviço em lote. É possível fornecer essas permissões para as VMs de um job concedendo o papel de relatório do agente em lote (roles/batch.agentReporter) à conta de serviço do job.
  • As VMs do job têm problemas de rede. As VMs de um job exigem acesso à rede para se comunicarem com o agente de serviço do Batch.
  • As VMs do job estão usando uma imagem do SO da VM em lote desatualizada ou uma imagem do SO da VM com o software do agente de serviço do Batch desatualizado. As VMs do job exigem software na imagem do SO da VM que fornece as dependências atuais para gerar relatórios ao agente de serviço do Batch.

Solução

Para resolver o problema, faça o seguinte:

  1. Verifique se as VMs do job têm as permissões necessárias para informar o estado ao agente de serviço do Batch.

    1. Para identificar a conta de serviço do job, visualize os detalhes do job usando a CLI gcloud ou a API Batch. Se nenhuma conta de serviço estiver listada, o job usará a conta padrão do Compute Engine.
    2. Confirme se a conta de serviço do job tem permissões para o papel de Relator do agente do Batch (roles/batch.agentReporter). Para mais informações, consulte Gerenciar acesso e Como restringir o uso da conta de serviço.

      Por exemplo, para conceder as permissões necessárias à conta de serviço padrão do Compute Engine, use o seguinte comando:

      gcloud projects add-iam-policy-binding \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      

      Substitua PROJECT_NUMBER pelo número do projeto.

  2. Verifique se as VMs do job têm acesso adequado à rede. Para mais informações, consulte Visão geral da rede em lote e Solução de problemas comuns de rede.

  3. Se você especificou a imagem do SO da VM para o job, verifique se ela é compatível no momento.

    1. Se você tiver ativado o Cloud Logging para o job, será possível identificar esse problema verificando qualquer um dos seguintes registros de agente (batch_agent_logs). Para mais informações, consulte Analisar um job usando registros.

      • Registro de erro de software do agente de serviço do Batch desatualizado:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
        

        O BATCH_AGENT_VERSION é a versão do software para se comunicar com o agente de serviço do Batch que o job usa, por exemplo, cloud-batch-agent_20221103.00_p00.

      • Registro de erro de imagem do SO da VM em lote desatualizado:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
        

        O BATCH_VM_OS_IMAGE_NAME é a versão específica de uma imagem do SO da VM do Batch que o job usa, por exemplo, batch-debian-11-20220909-00-p00.

    2. Resolva esse problema usando uma imagem mais recente do SO da VM. Se o job usar uma imagem personalizada, recrie-a com base em uma das versões mais recentes de uma imagem pública compatível.

      Para mais informações, consulte Imagens do SO da VM compatíveis e Visualizar imagens do SO da VM.

  4. Recrie o job.

Restrição violada para endereços IP externo da VM

Problema

O seguinte problema aparece no campo statusEvents para um job com falha:

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.

Esse problema ocorre porque seu projeto, pasta ou organização definiu a restrição de política organizacional compute.vmExternalIpAccess para que apenas VMs da lista de permissões possam usar endereços IP externo.

Solução

Para resolver o problema, recrie o job e siga um destes procedimentos:

Restrição violada para imagens confiáveis

Problema

O seguinte problema aparece no campo statusEvents para um job com falha:

Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.

Solução

Esse problema ocorre porque seu projeto definiu a restrição de política de imagens confiáveis (compute.trustedImageProjects) para que imagens do Batch, que estão no projeto de imagens batch-custom-image, não sejam permitidas.

Para resolver o problema, execute pelo menos uma das seguintes ações:

O job falhou ao usar um modelo de instância

Problema

O problema a seguir aparece no campo statusEvents de um job com falha que usa um modelo de instância:

INVALID_FIELD_VALUE,BACKEND_ERROR

Esse problema ocorre devido a problemas pouco claros com o modelo de instância do job.

Solução

Para depurar o problema, faça o seguinte:

  1. Crie um MIG usando o modelo de instância e observe se ocorrem erros com mais detalhes.
  2. Opcional: para tentar encontrar mais informações, consulte a operação de longa duração que está criando o MIG no console do Google Cloud.

    Acessar "Operações do Compute Engine"

Códigos de saída de falhas de tarefas

Quando uma tarefa específica em um job falha, ela retorna um código de saída diferente de zero. Dependendo de como você configurar o campo ignoreExitStatus, uma tarefa com falha pode ou não causar a falha de um job.

Além dos códigos de saída definidos em um executável, um lote tem vários códigos de saída reservados, incluindo os códigos de saída a seguir.

Preempção de VM (50001)

Problema

O seguinte problema aparece no campo statusEvents de um job:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.

Esse problema ocorre quando uma VM spot do job é interrompida durante o tempo de execução.

Solução

Para resolver o problema, siga um destes procedimentos:

  • Tente fazer a tarefa novamente usando novas tentativas automatizadas de tarefa ou execute novamente o job manualmente.
  • Para garantir que não haja preempção, use VMs com o modelo de provisionamento padrão.

Tempo limite do relatório da VM (50002)

Problema

O seguinte problema aparece no campo statusEvents de um job:

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.

Esse problema ocorre quando há um tempo limite no back-end que fez com que uma VM do job não recebesse mais atualizações.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefa ou execute novamente o job manualmente.

VM reinicializada durante a execução (50003)

Problema

O seguinte problema aparece no campo statusEvents de um job:

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.

Esse problema ocorre quando a VM de um job é reinicializada inesperadamente durante a execução.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefa ou execute novamente o job manualmente.

A VM e a tarefa não respondem (50004)

Problema

O seguinte problema aparece no campo statusEvents de um job:

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.

Esse problema ocorre quando uma tarefa atinge o limite de tempo de resposta e não pode ser cancelada.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefa ou execute novamente o job manualmente.

A tarefa é executada acima do tempo de execução máximo (50005)

Problema

O seguinte problema aparece no campo statusEvents de um job:

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.

Esse problema ocorre nos seguintes casos:

  • O tempo de execução de uma tarefa excede o limite de tempo especificado no campo maxRunDuration.
  • O tempo de execução de um executável excede o limite especificado no campo timeout

Para identificar especificamente qual limite de tempo foi excedido, visualize os registros do job e encontre um registro que mencione o código de saída 50005. O campo textPayload desse registro indica onde e quando o limite de tempo foi excedido.

Solução

Para resolver o problema, tente verificar o tempo total de execução exigido pela tarefa ou executável que excedeu o limite de tempo. Em seguida, execute um destes procedimentos:

  • Se você esperar esse erro apenas ocasionalmente, como em uma tarefa ou executável com um ambiente de execução inconsistente, tente recriar o job e configurá-lo para automatizar novas tentativas de tarefa para aumentar a taxa de sucesso.

  • Caso contrário, se a tarefa ou executável precisar de forma consistente e intencionalmente para concluir a execução do que o tempo limite atual permite, defina um tempo limite mais longo.

VM recriada durante a execução (50006)

Problema

O seguinte problema aparece no campo statusEvents de um job:

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.

Esse problema ocorre quando a VM de um job é recriada inesperadamente durante o ambiente de execução.

Solução

Para resolver esse problema, tente realizar a tarefa novamente usando novas tentativas automatizadas de tarefa ou execute novamente o job manualmente.

A seguir