Resolva problemas de criação de clusters

Use a ferramenta gcpdiag

gcpdiag é uma ferramenta de código aberto. Não é um produto Google Cloud suportado oficialmente. Pode usar a ferramenta gcpdiag para ajudar a identificar e corrigir Google Cloud problemas do projeto. 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 através das seguintes verificações:

  • Erros de rutura de stock: avalia os registos do Explorador de registos para descobrir ruturas de stock em regiões e zonas.
  • Quota insuficiente: verifica a disponibilidade de quota no projeto do cluster do Dataproc.
  • Configuração de rede incompleta: executa testes de conetividade de rede, incluindo verificações das regras de firewall necessárias e da configuração de IP externa e interna. Se o cluster tiver sido eliminado, a ferramenta gcpdiag não pode efetuar uma verificação da conetividade de rede.
  • Configuração incorreta entre projetos: verifica as contas de serviço entre projetos e revê a aplicação de funções adicionais e políticas da organização.
  • Funções da IAM da rede da nuvem virtual privada partilhada em falta: se o cluster do Dataproc usar uma rede da VPC partilhada, verifica se foram adicionadas as funções da conta de serviço necessárias.
  • Falhas na ação de inicialização: avalia os registos do Explorador de registos para descobrir falhas e tempos limite do script de ação de inicialização.

Para ver uma lista de gcpdiagpassos de criação de clusters, consulte a secção Passos potenciais.

Execute o comando gcpdiag

Pode executar o comando gcpdiag a partir do Cloud Shell na Google Cloud consola ou num contentor Docker.

Google Cloud consola

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

Docker

Pode executar o gcpdiag usando um wrapper que inicia o gcpdiag num contentor do Docker. O Docker ou o Podman têm de estar instalados.

  1. Copie e execute o seguinte comando na sua 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 manual de procedimentos.

Substitua o seguinte:

    • 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. Estes parâmetros são obrigatórios se o cluster tiver sido eliminado.
      • 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 do 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 noutro projeto

Sinalizações úteis:

Para ver uma lista e uma descrição de todas as flags da ferramenta gcpdiag, consulte as gcpdiag instruções de utilização.

Compreenda e corrija erros de criação de clusters

Esta secção apresenta mensagens de erro do Dataproc, bem como as respetivas causas e soluções comuns.

  • A operação excedeu o tempo limite: apenas 0 de 2 datanodes/gestores de nós mínimos necessários em execução.

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

    Solução:

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

    Causa: este erro pode ocorrer quando tenta configurar um cluster do Dataproc usando uma rede VPC noutro projeto e a conta de serviço do agente de serviço do Dataproc não tem as autorizações necessárias no projeto de VPC partilhada que está a alojar a rede.

    Solução: siga os passos indicados em Crie um cluster que use uma rede de VPC noutro projeto.

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

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

    Solução:

  • Erros de quota excedida

    Quota CPUS/CPUS_ALL_REGIONS insuficiente
    Quota "DISKS_TOTAL_GB" insuficiente
    Quota "IN_USE_ADDRESSES" insuficiente

    Causa: o seu pedido de CPU, disco ou endereço IP excede a quota disponível.

    Solução: peça quota adicional na Google Cloud consola.

  • 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. ... Ver resultado 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ços IP esgotado

    Causa: o espaço de endereços IP necessário para aprovisionar os nós do cluster pedidos não está disponível.

    Solução:

    • Crie um cluster numa sub-rede ou numa rede diferente.
    • Reduza a utilização na rede para libertar espaço de endereços IP.
    • Aguarde até que fique disponível espaço de IP suficiente na rede.
  • Mensagem de erro do script de inicialização: o repositório REPO_NAME já não tem um ficheiro de lançamento

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

    Solução:

    Adicione o seguinte código antes do código que é executado apt-get no seu 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 comunique ou A rede está inacessível: dataproccontrol-REGION.googleapis.com

    Causa: estas mensagens de erro indicam que a configuração de rede do seu cluster do Dataproc está incompleta: pode estar a faltar a rota para o gateway de Internet predefinido ou as regras de firewall.

    Solução:

    Para resolver este problema, pode criar os seguintes testes de conetividade:

    • Crie um teste de conetividade entre duas VMs do cluster do Dataproc. O resultado deste teste ajuda a compreender 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 conetividade entre uma VM do cluster do Dataproc e um endereço IP da API de controlo do Dataproc atual. Para obter um endereço IP atual da API Dataproc Control, use o seguinte comando:
    dig dataproccontrol-REGION.googleapis.com A
    

    Use qualquer um dos endereços IPv4 na secção de respostas do resultado.

    O resultado do teste de conetividade ajuda a compreender se o caminho para o gateway de Internet predefinido e a firewall de saída estão configurados corretamente.

    Com base nos resultados dos testes de conetividade:

  • Erro devido à atualização

    Causa: o cluster aceitou uma tarefa enviada para o serviço Dataproc, mas não conseguiu aumentar ou diminuir a escala manualmente ou através do redimensionamento automático. Este erro também pode ser causado por uma configuração de cluster não padrão.

    Solução:

    • Reposição do cluster: abra um pedido de apoio técnico, inclua um ficheiro TAR de diagnóstico e peça que o cluster seja reposto para um estado RUNNING.

    • Novo cluster: recrie o cluster com a mesma configuração. Esta solução pode ser mais rápida do que uma reposição fornecida pelo apoio técnico.

Sugestões de resolução de problemas de clusters

Esta secção fornece orientações adicionais sobre a resolução de problemas comuns que podem impedir a criação de clusters do Dataproc.

Quando um cluster do Dataproc não é aprovisionado, produz frequentemente uma mensagem de erro genérica ou comunica um estado PENDING ou PROVISIONING antes de falhar. A chave para diagnosticar e resolver problemas de falhas de clusters é examinar os registos de clusters e avaliar os pontos de falhas comuns.

Sintomas e mensagens de erro comuns

Seguem-se os sintomas e as mensagens de erro comuns associados a falhas de criação de clusters:

  • O estado do cluster permanece PENDING ou PROVISIONING durante um período prolongado.
  • O cluster passa para o estado ERROR.
  • Erros genéricos da API durante a criação de clusters, como Operation timed out.
  • Mensagens de erro registadas ou de resposta da API, como:

    • RESOURCE_EXHAUSTED: relacionado com quotas 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 com a falha das ações de inicialização, como erros de execução de scripts e ficheiros não encontrados.

Reveja os registos do cluster

Um passo inicial importante ao diagnosticar falhas na criação de clusters é rever os registos detalhados de clusters disponíveis no Cloud Logging.

  1. Aceda ao Explorador de registos: abra o Explorador de registos na Google Cloud consola.
  2. Filtre por clusters do Dataproc:
    • No menu pendente Recurso, selecione Cloud Dataproc Cluster.
    • Introduza o seu cluster_name e project_id. Também pode filtrar por location (região).
  3. Examine as entradas do registo:
    • Procure mensagens ao nível de ERROR ou WARNING que ocorram perto da hora da falha de criação do cluster.
    • Preste atenção aos registos dos componentes master-startup, worker-startup e agent para obter estatísticas sobre problemas ao nível da VM ou do agente Dataproc.
    • Para obter informações detalhadas sobre problemas de tempo de arranque da VM, filtre os registos por resource.type="gce_instance" e procure mensagens dos nomes das instâncias associadas aos nós do cluster, como CLUSTER_NAME-m ou CLUSTER_NAME-w-0. Os registos da consola série podem revelar problemas de configuração de rede, problemas de disco e falhas de scripts que ocorrem no início do ciclo de vida da VM.

Causas comuns de falhas de clusters e sugestões de resolução de problemas

Esta secção descreve os motivos comuns pelos quais a criação do cluster do Dataproc pode falhar e fornece sugestões de resolução de problemas para ajudar a resolver falhas de clusters.

Autorizações de IAM insuficientes

A conta de serviço da VM que o seu cluster do Dataproc usa tem de ter as funções da IAM adequadas para aprovisionar instâncias do Compute Engine, aceder a contentores do Cloud Storage, escrever registos e interagir com outros Google Cloud serviços.

  • Função de trabalhador obrigatória: verifique se a conta de serviço da VM tem a função Trabalhador do Dataproc (roles/dataproc.worker). Esta função tem as autorizações mínimas necessárias para o Dataproc gerir os recursos do cluster.
  • Autorizações de acesso aos dados: se os seus trabalhos lerem ou escreverem no Cloud Storage ou no BigQuery, a conta de serviço precisa de funções relacionadas, 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.
  • Autorizações de registo: a conta de serviço tem de ter uma função com as autorizações necessárias para escrever registos no Cloud Logging, como a função Logging Writer.

Sugestões de resolução de problemas:

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

  • Verifique as funções do IAM: aceda à página IAM e administrador > IAM na Google Cloud consola, encontre a conta de serviço da VM do cluster e, em seguida, verifique se tem as funções necessárias para as operações do cluster. Conceda as funções em falta.

As quotas de recursos foram excedidas

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

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

Sugestões de resolução de problemas:

  • Reveja as quotas: aceda à página IAM e administrador > IAM na Google Cloud consola. Filtre por "Serviço" para "API Compute Engine" e "API Dataproc".
  • Verifique a utilização em comparação com o limite: identifique as quotas que estão nos respetivos limites ou perto deles.
  • Se necessário, peça um aumento da quota.

Problemas de configuração de rede

Os problemas de configuração de rede, como a configuração incorreta da rede VPC, da sub-rede, da firewall ou do DNS, são uma causa comum de falhas na criação de clusters. As instâncias do cluster têm de conseguir comunicar entre si e com as APIs Google.

  • Rede da 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 à Google (PGA): se as VMs do cluster tiverem endereços IP internos e precisarem de alcançar as APIs Google para o Cloud Storage, o Cloud Logging e outras operações, verifique se o acesso privado à Google está ativado na sub-rede. Por predefinição, os clusters do Dataproc criados com versões de imagens 2.2 ou superiores aprovisionam VMs com endereços IP apenas internos com o acesso privado à Google ativado na sub-rede regional do cluster.
  • Private Service Connect (PSC): se estiver a usar o Private Service Connect para aceder às APIs Google, verifique se os pontos finais do Private Service Connect necessários estão configurados corretamente para as APIs Google das quais o Dataproc depende, como dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com e logging.googleapis.com. As entradas de DNS para as APIs têm de resolver para endereços IP privados. Tenha em atenção que a utilização do Private Service Connect não elimina a necessidade de usar o peering de VPC para comunicar com outras redes de VPC geridas pelo cliente. .
  • Interligação de VPCs: se o cluster comunicar com recursos noutras redes VPC, como projetos anfitriões de VPC partilhada ou outras VPCs de clientes, verifique se a interligação de VPCs está configurada corretamente e se os trajetos estão a propagar-se.
  • Regras de firewall:

    • Regras predefinidas: verifique se as regras da firewall predefinidas, como allow-internal ou allow-ssh, não são excessivamente restritivas.
    • Regras personalizadas: se tiver regras de firewall personalizadas, verifique se estas permitem os caminhos de comunicação necessários:

      • Comunicação interna no cluster (entre os nós -m e -w).
      • Tráfego de saída das VMs do cluster para as APIs Google, através de IPs públicos ou de um gateway de Internet, acesso privado à Google ou pontos finais do Private Service Connect.

      • Tráfego para quaisquer origens de dados ou serviços externos dos quais as suas tarefas dependem.

  • Resolução de DNS: confirme se as instâncias do cluster conseguem resolver corretamente os nomes de DNS para as APIs Google e quaisquer serviços internos ou externos.

Sugestões de resolução de problemas:

  • Reveja a configuração de rede: inspecione as definições da rede VPC e da sub-rede onde o cluster está a ser implementado.
  • Verifique as regras de firewall: reveja as regras de firewall na rede de VPC ou no projeto anfitrião da VPC partilhada.
  • Teste a conetividade: inicie uma VM do Compute Engine temporária na sub-rede do cluster e execute os seguintes passos:
    • ping ou curl para domínios da API Google externos, como storage.googleapis.com.
    • nslookup para validar a resolução de DNS para os endereços IP esperados (acesso privado à Google ou Private Service Connect).
    • Execute Google Cloud testes de conetividade para diagnosticar caminhos de uma VM de teste para pontos finais 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. Os erros nestes scripts podem impedir o arranque do cluster.

Sugestões de resolução de problemas:

  • Examine os registos de erros de ações de inicialização: procure entradas de registo relacionadas com init-actions ou startup-script para as instâncias do cluster no Cloud Logging.
  • Verifique os caminhos e as autorizações dos scripts: verifique se os scripts de ação de inicialização estão corretamente localizados 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 scripts do Cloud Storage.
  • Depure a lógica do script: teste a lógica do script numa VM do Compute Engine separada que imite o ambiente do cluster para identificar erros. Adicione o registo detalhado ao script.

Disponibilidade de recursos regionais (esgotados)

Ocasionalmente, um tipo de máquina ou um recurso numa região ou numa zona fica temporariamente indisponível (esgotado). Normalmente, isto resulta em erros RESOURCE_EXHAUSTED não relacionados com problemas de quota do projeto.

Sugestões de resolução de problemas:

  • Experimente uma zona ou uma região diferente: tente criar o cluster numa zona diferente na mesma região ou numa região diferente.
  • Use o posicionamento automático de zonas: use a funcionalidade posicionamento automático de zonas do Dataproc para selecionar automaticamente uma zona com capacidade.
  • Ajuste o tipo de máquina: se estiver a usar um tipo de máquina personalizado ou especializado, experimente um tipo de máquina padrão para ver se isso resolve o problema.

Contacte o Cloud Customer Care

Se continuar a ter problemas de falha de cluster, contacte o apoio ao cliente da nuvem. Descreva o problema de falha do cluster e os passos de resolução de problemas realizados. Além disso, faculte as seguintes informações:

  • Agrupe dados de diagnóstico
  • Resultado do seguinte comando:
      gcloud dataproc clusters describe CLUSTER_NAME \
          -region=REGION
      
  • Registos exportados para o cluster com falhas.

O que se segue?