Resolver problemas de criação de clusters

Usar a ferramenta gcpdiag

gcpdiag é uma ferramenta de código aberto. Não é um produto Google Cloud com suporte oficial. Use a ferramenta gcpdiag para identificar e corrigir problemas no projeto Google Cloud. Para mais informações, consulte o projeto gcpdiag no GitHub.

A ferramenta gcpdiag ajuda a descobrir os seguintes problemas de criação de clusters do Dataproc realizando estas verificações:

  • Erros de falta de estoque:avalia os registros da Análise de registros para descobrir faltas de estoque em regiões e zonas.
  • Cota insuficiente:verifica a disponibilidade de cota no projeto do cluster do Dataproc.
  • Configuração de rede incompleta:realiza testes de conectividade de rede, incluindo verificações de regras de firewall necessárias e configuração de IP externo e interno. Se o cluster tiver sido excluído, a ferramenta gcpdiag não poderá fazer uma verificação de conectividade de rede.
  • Configuração incorreta entre projetos:verifica contas de serviço entre projetos e revisa outras funções e a aplicação de políticas da organização.
  • Funções do IAM da rede de nuvem privada virtual compartilhada ausentes:se o cluster do Dataproc usar uma rede VPC compartilhada, verifique a adição das funções necessárias da conta de serviço.
  • Falhas na ação de inicialização: avalia os registros do Explorador de registros para descobrir falhas e tempos limite de scripts de ação de inicialização.

Para uma lista de etapas de criação de clusters do gcpdiag, consulte Etapas possíveis.

Execute o comando gcpdiag.

É possível executar o comando gcpdiag no Cloud Shell no consoleGoogle Cloud ou em um contêiner Docker.

Google Cloud console

  1. Preencha e copie o comando a seguir.
  2. gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Abra o Google Cloud console e ative o Cloud Shell.
  4. Abrir Console do Cloud
  5. Cole o comando copiado.
  6. Execute o comando gcpdiag, que faz o download da imagem Docker gcpdiag. e realiza verificações de diagnóstico. Se aplicável, siga as instruções de saída para corrigir verificações com falha.

Docker

Você pode executar gcpdiag usando um wrapper que inicia gcpdiag em um contêiner do Docker. Docker ou Podman precisa ser instalado.

  1. Copie e execute o seguinte comando na estação de trabalho local.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Execute o comando gcpdiag.
    ./gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

Veja os parâmetros disponíveis para este runbook.

Substitua:

    • PROJECT_ID: o ID do projeto que contém o recurso
    • CLUSTER_NAME: o nome do cluster do Dataproc de destino no seu projeto.
    • OPTIONAL_PARAMETERS: adicione um ou mais dos seguintes parâmetros opcionais. Esses parâmetros são obrigatórios se o cluster foi excluído.
      • cluster_uuid: o UUID do cluster do Dataproc de destino no seu projeto.
      • service_account: a conta de serviço da VM do cluster do Dataproc
      • subnetwork: o caminho completo do URI da sub-rede do cluster do Dataproc.
      • internal_ip_only: verdadeiro ou falso
      • cross_project: o ID entre projetos se o cluster do Dataproc usar uma conta de serviço de VM em outro projeto.

Flags úteis

Para conferir uma lista e descrição de todas as flags da ferramenta gcpdiag, consulte Instruções de uso do gcpdiag.

Entender e corrigir erros de criação de cluster

Nesta seção, listamos as mensagens de erro do Dataproc e as causas e soluções comuns.

  • Operação expirada:somente 0 de dois nós de dados/gerenciadores de nós obrigatórios em execução.

    Causa: o nó do controlador não consegue criar o cluster porque não pode se comunicar com os nós de trabalho.

    Solução:

  • Permissão compute.subnetworks.use necessária para projects/{projectId}/regions/{region}/subnetworks/{subnetwork}

    Causa: esse erro pode ocorrer quando você tenta configurar um cluster do Dataproc usando uma rede VPC em outro projeto e a conta de serviço do agente de serviços do Dataproc não tem as permissões necessárias no projeto de VPC compartilhada que hospeda a rede.

    Solução: siga as etapas listadas em Criar um cluster que usa uma rede VPC em outro projeto.

  • A zona projects/zones/{zone} não tem recursos suficientes disponíveis para atender à solicitação (resource type:compute)

    Causa: a zona usada para criar o cluster não tem recursos suficientes.

    Solução:

  • Erros de cota excedida

    Cota insuficiente de CPUs/CPUS_ALL_REGIONS
    Cota insuficiente de "DISKS_TOTAL_GB"
    Cota insuficiente "IN_USE_ADDRESSES"

    Causa: sua solicitação de CPU, disco ou endereço IP excede a cota disponível.

    Solução: solicite mais cota no console doGoogle Cloud .

  • Falha na ação de inicialização

    Causa: a ação de inicialização fornecida durante a criação do cluster não foi instalada.

    Solução:

  • Falha ao inicializar o nó CLUSTER-NAME-m. ... Consulte a saída em: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Causa: não foi possível inicializar o nó do controlador do cluster do Dataproc.

    Solução:

  • Falha na criação do cluster: espaço de endereço IP esgotado

    Causa: o espaço de endereço IP necessário para provisionar os nós do cluster solicitados está indisponível.

    Solução:

    • Crie um cluster em uma sub-rede ou rede diferente.
    • Reduza o uso na rede para liberar espaço de endereço IP.
    • Aguarde até que haja espaço de IP suficiente disponível na rede.
  • Mensagem de erro do script de inicialização: o repositório REPO_NAME não tem mais um arquivo de lançamento

    Causa: o repositório de backports do Debian oldstable foi removido.

    Solução:

    Adicione o seguinte código antes do código que executa apt-get no script de inicialização.

    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
    
  • Tempo limite de espera para a instância DATAPROC_CLUSTER_VM_NAME informar ou A rede está inacessível: dataproccontrol-REGION.googleapis.com

    Causa: essas mensagens de erro indicam que a configuração de rede do cluster do Dataproc está incompleta. Talvez esteja faltando a rota para o gateway de Internet padrão ou as regras de firewall.

    Solução:

    Para resolver esse problema, crie os seguintes Testes de conectividade:

    • Crie um teste de conectividade entre duas VMs de cluster do Dataproc. O resultado desse teste ajuda você a entender se as regras de firewall de permissão de entrada ou saída da sua rede se aplicam corretamente às VMs do cluster.
    • Crie um teste de conectividade entre uma VM de cluster do Dataproc e um endereço IP da API de controle do Dataproc atual. Para receber um endereço IP atual da API de controle do Dataproc, use o seguinte comando:
    dig dataproccontrol-REGION.googleapis.com A
    

    Use qualquer um dos endereços IPv4 na seção de respostas da saída.

    O resultado do teste de conectividade vai ajudar você a entender se a rota para o gateway de Internet padrão e o firewall de saída estão configurados corretamente.

    Com base nos resultados dos testes de conectividade:

  • Erro devido a uma atualização

    Causa: o cluster aceitou um job enviado ao serviço do Dataproc, mas não foi possível escalonar verticalmente ou horizontalmente de forma manual ou por escalonamento automático. Esse erro também pode ser causado por uma configuração de cluster não padrão.

    Solução:

    • Redefinição do cluster:abra um tíquete de suporte, inclua um arquivo tar de diagnóstico e peça para que o cluster seja redefinido para o estado EM EXECUÇÃO.

    • Novo cluster:recrie o cluster com a mesma configuração. Essa solução pode ser mais rápida do que uma redefinição fornecida pelo suporte.

Dicas para solucionar problemas de cluster

Esta seção oferece mais orientações sobre a solução de problemas comuns que podem impedir a criação de clusters do Dataproc.

Quando um cluster do Dataproc não é provisionado, ele geralmente gera uma mensagem de erro genérica ou informa um status PENDING ou PROVISIONING antes de falhar. A chave para diagnosticar e resolver problemas de falha do cluster é examinar os registros do cluster e avaliar os pontos de falha comuns.

Sintomas e mensagens de erro comuns

Confira a seguir os sintomas e mensagens de erro comuns associados a falhas na criação de clusters:

  • O status do cluster permanece PENDING ou PROVISIONING por um longo período.
  • O cluster faz a transição para o estado ERROR.
  • Erros genéricos da API durante a criação do cluster, como Operation timed out.
  • Mensagens de erro registradas ou de resposta da API, como:

    • RESOURCE_EXHAUSTED: relacionado a cotas de CPU, disco ou endereço IP
    • Instance failed to start
    • Permission denied
    • Unable to connect to service_name.googleapis.com ou Could not reach required Google APIs
    • Connection refused ou network unreachable
    • Erros relacionados à falha das ações de inicialização, como erros de execução de script e arquivo não encontrado.

Analisar registros de cluster

Uma etapa inicial importante ao diagnosticar falhas na criação de clusters é revisar os registros detalhados disponíveis no Cloud Logging.

  1. Acesse o Explorador de registros: abra o Explorador de registros no console Google Cloud .
  2. Filtre os clusters do Dataproc:
    • No menu suspenso Recurso, selecione Cloud Dataproc Cluster.
    • Insira seu cluster_name e project_id. Também é possível filtrar por location (região).
  3. Analise as entradas de registro:
    • Procure mensagens de nível ERROR ou WARNING que ocorram perto do momento da falha na criação do cluster.
    • Preste atenção aos registros dos componentes master-startup, worker-startup e agent para insights sobre problemas no nível da VM ou do agente do Dataproc.
    • Para ter insights sobre problemas de tempo de inicialização da VM, filtre os registros por resource.type="gce_instance" e procure mensagens dos nomes de instâncias associados aos nós do cluster, como CLUSTER_NAME-m ou CLUSTER_NAME-w-0. Os registros do console serial podem revelar problemas de configuração de rede, problemas de disco e falhas de script que ocorrem no início do ciclo de vida da VM.

Causas comuns de falhas no cluster e dicas para resolver problemas

Esta seção descreve os motivos comuns para a falha na criação de um cluster do Dataproc e oferece dicas para resolver problemas.

Permissões do IAM insuficientes

A conta de serviço da VM usada pelo cluster do Dataproc precisa ter os papéis do IAM adequados para provisionar instâncias do Compute Engine, acessar buckets do Cloud Storage, gravar registros e interagir com outros serviços do Google Cloud .

  • Papel de worker obrigatório: verifique se a conta de serviço da VM tem o papel Worker do Dataproc (roles/dataproc.worker). Esse papel tem as permissões mínimas necessárias para que o Dataproc gerencie os recursos do cluster.
  • Permissões de acesso a dados: se os jobs lerem ou gravarem no Cloud Storage ou no BigQuery, a conta de serviço precisará de papéis relacionados, como Storage Object Viewer, Storage Object Creator ou Storage Object Admin para o Cloud Storage ou BigQuery Data Viewer ou BigQuery Editor para o BigQuery.
  • Permissões de geração de registros: a conta de serviço precisa ter um papel com as permissões necessárias para gravar registros no Cloud Logging, como o papel Logging Writer.

Dicas para solução de problemas:

  • Identifique a conta de serviço: determine a conta de serviço da VM que seu cluster está configurado para usar. Se não for especificado, o padrão será a conta de serviço padrão do Compute Engine.

  • Verifique os papéis do IAM: acesse a página IAM e administrador > IAM no console Google Cloud , encontre a conta de serviço da VM do cluster e verifique se ela tem os papéis necessários para as operações do cluster. Conceda os papéis que estiverem faltando.

Cotas de recursos excedidas

Os clusters do Dataproc consomem recursos do Compute Engine e de outros serviços do Google Cloud . Exceder as cotas regionais ou de projeto pode causar falhas na criação do cluster.

  • Cotas comuns do Dataproc para verificar:
    • CPUs (regional)
    • DISKS_TOTAL_GB (regional)
    • IN_USE_ADDRESSES (regional para IPs internos, global para IPs externos)
    • Cotas da API Dataproc, como ClusterOperationRequestsPerMinutePerProjectPerRegion .

Dicas para solução de problemas:

  • Analise as cotas: acesse a página IAM e administrador > IAM no console do Google Cloud . Filtre por "Serviço" para "API Compute Engine" e "API Dataproc".
  • Verifique o uso em relação ao limite: identifique as cotas que estão no limite ou perto dele.
  • Se necessário, solicite um aumento de cota.

Problemas de configuração de rede

Problemas de configuração de rede, como configuração incorreta de rede VPC, sub-rede, firewall ou DNS, são uma causa comum de falhas na criação de clusters. As instâncias do cluster precisam se comunicar entre si e com as APIs do Google.

  • Rede e sub-rede VPC:
    • Verifique se a rede VPC e a sub-rede do cluster existem e estão configuradas corretamente.
    • Verifique se a sub-rede tem um intervalo suficiente de endereços IP disponíveis.
  • Acesso privado do Google (PGA): se as VMs do cluster tiverem endereços IP internos e precisarem acessar as APIs do Google para o Cloud Storage, o Cloud Logging e outras operações, verifique se o Acesso privado do Google está ativado na sub-rede. Por padrão, os clusters do Dataproc criados com versões de imagem 2.2 ou mais recentes provisionam VMs com endereços IP somente internos e o Acesso privado do Google ativado na sub-rede regional do cluster.
  • Private Service Connect (PSC): se você estiver usando o Private Service Connect para acessar APIs do Google, verifique se os endpoints do Private Service Connect necessários estão configurados corretamente para as APIs do Google de que o Dataproc depende, como dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com e logging.googleapis.com. As entradas de DNS das APIs precisam ser resolvidas para endereços IP particulares. O uso do Private Service Connect não elimina a necessidade de usar o peering de VPC para se comunicar com outras redes VPC gerenciadas pelo cliente. .
  • Peering de VPC: se o cluster se comunicar com recursos em outras redes VPC, como projetos host de VPC compartilhada ou outras VPCs de clientes, verifique se o peering de VPC está configurado corretamente e se as rotas estão sendo propagadas.
  • Regras de firewall:

    • Regras padrão: verifique se as regras de firewall padrão, como allow-internal ou allow-ssh, não são muito restritivas.
    • Regras personalizadas: se houver regras de firewall personalizadas, verifique se elas permitem os caminhos de comunicação necessários:

      • Comunicação interna no cluster (entre nós -m e -w).
      • Tráfego de saída de VMs do cluster para APIs do Google, usando IPs públicos ou um gateway de Internet, Acesso privado do Google ou endpoints do Private Service Connect.

      • Tráfego para fontes de dados ou serviços externos de que seus jobs dependem.

  • Resolução de DNS: confirme se as instâncias do cluster podem resolver corretamente os nomes DNS das APIs do Google e de qualquer serviço interno ou externo.

Dicas para solução de problemas:

  • Revise a configuração de rede: inspecione as configurações de rede VPC e sub-rede em que o cluster está sendo implantado.
  • Verifique as regras de firewall: analise as regras de firewall na rede VPC ou no projeto host da VPC compartilhada.
  • Teste a conectividade: inicie uma VM temporária do Compute Engine na sub-rede do cluster e execute as seguintes etapas:
    • ping ou curl para domínios externos da API Google, como storage.googleapis.com.
    • nslookup para verificar a resolução de DNS para os endereços IP esperados (Acesso privado do Google ou Private Service Connect).
    • Execute Google Cloud testes de conectividade para diagnosticar caminhos de uma VM de teste até os endpoints relevantes.

Falhas na ação de inicialização

As ações de inicialização do Dataproc são scripts executados em VMs do cluster durante a criação do cluster. Erros nesses scripts podem impedir a inicialização do cluster.

Dicas para solução de problemas:

  • Examine os registros em busca de erros de ação de inicialização: procure entradas de registro relacionadas a init-actions ou startup-script para as instâncias do cluster no Cloud Logging.
  • Verifique os caminhos e as permissões dos scripts: verifique se os scripts de ação de inicialização estão localizados corretamente no Cloud Storage e se a conta de serviço da VM do cluster tem a função Storage Object Viewer necessária para ler os scripts do Cloud Storage.
  • Depure a lógica do script: teste a lógica do script em uma VM separada do Compute Engine que imita o ambiente do cluster para identificar erros. Adicione o registro detalhado ao script.

Disponibilidade regional de recursos (falta de estoque)

Às vezes, um tipo de máquina ou recurso em uma região ou zona fica temporariamente indisponível (esgotado). Normalmente, isso resulta em erros RESOURCE_EXHAUSTED não relacionados a problemas de cota do projeto.

Dicas para solução de problemas:

  • Tente outra zona ou região: crie o cluster em uma zona diferente na mesma região ou em outra região.
  • Use a colocação em zona automática: use o recurso Colocação em zona automática do Dataproc para selecionar automaticamente uma zona com capacidade.
  • Ajuste o tipo de máquina: se você estiver usando um tipo de máquina personalizado ou especializado, tente um tipo de máquina padrão para ver se isso resolve o problema.

Próximas etapas

Se os problemas de falha do cluster persistirem:

  • Entre em contato com o Cloud Customer Care. Descreva o problema de falha do cluster e as etapas de solução de problemas realizadas. Informe também o seguinte:
    • Dados de diagnóstico do cluster
    • Saída do seguinte comando:
      gcloud dataproc clusters describe CLUSTER_NAME \
          -region=REGION
      
    • Registros exportados do cluster com falha.