Resolver problemas de criação de cluster

Este documento explica mensagens de erro comuns de criação de cluster e oferece dicas para solucionar problemas de criação de cluster.

Mensagens de erro comuns de criação de cluster

  • O usuário não está autorizado a atuar como conta de serviço

    Causa: o principal que está tentando criar o cluster do Dataproc não tem as permissões necessárias para usar a conta de serviço especificada. Os usuários do Dataproc precisam ter a permissão da conta de serviço ActAs para implantar recursos do Dataproc. Essa permissão está incluída no papel Usuário da conta de serviço (roles/iam.serviceAccountUser) (consulte Papéis do Dataproc).

    Solução: identifique o usuário ou a conta de serviço que está tentando criar o cluster do Dataproc. Conceda a esse principal o papel Usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço que o cluster está configurado para usar (normalmente, a conta de serviço da VM do Dataproc).

  • 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 Google Cloud console.

  • 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: falha na inicialização do 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 de cluster solicitados está indisponível.

    Solução:

    • Crie um cluster com menos nós de trabalho, mas um tipo de máquina maior.
    • 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 espaço de IP suficiente fique 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 limpo.

    Solução:

    Adicione o código a seguir 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 que a instância DATAPROC_CLUSTER_VM_NAME seja informada 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 você não tenha a rota para o gateway de Internet padrão ou 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 vai ajudar 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 da API de controle do Dataproc atual, 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 permissão 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 fazer o escalonamento vertical ou horizontal manualmente 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 um 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 de solução de problemas do cluster

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

Quando um cluster do Dataproc não é provisionado, ele geralmente produz 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 de cluster é examinar os registros do cluster e avaliar os pontos de falha comuns.

Sintomas comuns

A seguir, apresentamos sintomas comuns associados a falhas na criação de clusters:

  • O status do cluster permanece PENDING ou PROVISIONING por um período prolongado.
  • O cluster faz a transição para o estado ERROR.
  • Erros genéricos de 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 a falhas nas 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 é analisar os registros detalhados do cluster disponíveis no Cloud Logging.

  1. Acesse a Análise de registros: abra a Análise de registros no Google Cloud console.
  2. Filtre os clusters do Dataproc:
    • No menu suspenso Recurso, selecione Cloud Dataproc Cluster.
    • Insira o cluster_name e o project_id. Também é possível filtrar por location (região).
  3. Examine 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 de master-startup, worker-startup e agent componentes para insights sobre problemas de agente do Dataproc ou de VM.
    • Para 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 falha de cluster e dicas de solução de problemas

Esta seção descreve os motivos comuns pelos quais a criação de clusters do Dataproc pode falhar e oferece dicas de solução de problemas para ajudar a solucionar falhas de cluster.

Permissões do IAM insuficientes

A conta de serviço da VM que o cluster do Dataproc usa 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 Google Cloud serviços.

  • Papel de worker necessá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 registro: 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:

Cotas de recursos excedidas

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

  • Cotas comuns do Dataproc a serem verificadas:
    • 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:

  • Analisar cotas: acesse a página IAM e administrador > IAM noconsole. Google Cloud Filtre por "Serviço" para "API Compute Engine" e "API Dataproc".
  • Verificar 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 VPC, sub-rede, firewall ou DNS, são uma causa comum de falhas na criação de clusters. As instâncias de cluster precisam se comunicar entre si e com as APIs do Google.

  • Rede VPC e sub-rede:
    • 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 com 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 as APIs do Google, verifique se os endpoints necessários do Private Service Connect estão configurados corretamente para as APIs do Google das quais o Dataproc depende, como dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com e logging.googleapis.com. As entradas 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 de 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 qualquer fonte de dados ou serviço externo de que seus jobs dependam.

  • Resolução de DNS: confirme se as instâncias de 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:

  • Analisar a configuração de rede: inspecione as configurações de rede VPC e de sub-rede em que o cluster está sendo implantado.
  • Verificar regras de firewall: analise as regras de firewall na rede VPC ou no projeto host de VPC compartilhada.
  • Testar a conectividade: inicie uma VM temporária do Compute Engine na sub-rede do cluster e siga estas etapas:
    • ping ou curl para domínios externos da API do Google, como storage.googleapis.com.
    • nslookup para verificar a resolução de DNS para 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 para endpoints relevantes.

Falhas na ação de inicialização

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

Dicas para solução de problemas:

  • Examinar registros de erros de ação de inicialização: procure entradas de registro relacionadas a init-actions ou startup-script para as instâncias de cluster no Cloud Logging.
  • Verificar caminhos e permissões de script: 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 o papel Storage Object Viewer necessário para ler scripts do Cloud Storage.
  • Depurar 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 registros detalhados ao script.

Disponibilidade de recursos regionais (esgotamento)

Ocasionalmente, um tipo de máquina ou recurso em uma região ou zona apresenta indisponibilidade temporária (esgotamento). Normalmente, isso resulta em RESOURCE_EXHAUSTED erros não relacionados a problemas de cota do projeto.

Dicas para solução de problemas:

  • Tente uma zona ou região diferente: tente criar o cluster em uma zona diferente na mesma região ou em uma região diferente.
  • Usar a colocação em zona automática: use o recurso de colocação em zona automática do Dataproc para selecionar automaticamente uma zona com capacidade.
  • Ajustar 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 verificar se isso resolve o problema.

Entrar em contato com o atendimento ao cliente do Cloud

Se você continuar tendo problemas de falha de cluster, entre em contato com o atendimento ao cliente do Cloud. Descreva o problema de falha do cluster e etapas de solução de problemas realizadas. Além disso, forneça as seguintes informações:

  • Dados de diagnóstico do cluster
  • Saída do seguinte comando:
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      
  • Registros exportados para o cluster com falha.

Usar a ferramenta gcpdiag

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

A ferramenta gcpdiag ajuda você a descobrir os seguintes problemas de criação de cluster do Dataproc realizando as seguintes verificações:

  • Erros de esgotamento:avalia os registros da Análise de registros para descobrir esgotamentos em regiões e zonas.
  • Cota insuficiente: verifica a disponibilidade de cota no projeto de 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 foi excluído, a ferramenta gcpdiag não poderá realizar uma verificação de conectividade de rede.
  • Configuração incorreta entre projetos: verifica as contas de serviço entre projetos e analisa a aplicação de papéis e políticas da organização adicionais.
  • Papéis do IAM de rede VPC compartilhada ausentes:se o cluster do Dataproc usar uma rede VPC compartilhada, verifique a adição dos papéis de conta de serviço necessários.
  • Falhas na ação de inicialização: avalia os registros da Análise de registros para descobrir falhas e tempos limite de script de ação de inicialização.

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

Executar o gcpdiag comando

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

Google Cloud Console do

  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 de URI completo 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 as gcpdiag instruções de uso.

A seguir