Resolver problemas de criação de cluster

Neste documento, explicamos as mensagens de erro comuns de criação de cluster e fornecemos dicas sobre como resolver problemas de criação de cluster.

Mensagens de erro comuns na criação de clusters

  • Usuário não autorizado a atuar como conta de serviço

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

    Solução: identifique o usuário ou a conta de serviço que está tentando criar o cluster do Serviço Gerenciado para Apache Spark. Conceda a esse principal o papel de 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 Serviço Gerenciado para Apache Spark).

  • Tempo limite da operação: apenas 0 dos 2 nós de dados/gerenciadores de nós mínimos necessários estão 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 Serviço Gerenciado para Apache Spark usando uma rede VPC em outro projeto e a conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark 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:

    • Use o recurso de posicionamento automático de zona do Serviço Gerenciado para Apache Spark para criar o cluster em qualquer uma das zonas de uma região com recursos disponíveis.
    • Crie o cluster em uma zona diferente.
  • 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. ... Confira a saída em: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Causa: falha ao inicializar o nó do controlador do cluster do Serviço Gerenciado para Apache Spark.

    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:

    • Criar 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 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 oldstable do Debian foi removido.

    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 aguardando 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 Serviço Gerenciado para Apache Spark 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 Serviço Gerenciado para Apache Spark. 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 Serviço Gerenciado para Apache Spark e um endereço IP atual da API de controle do Serviço Gerenciado para Apache Spark. Para receber um endereço IP atual da API de controle do Serviço Gerenciado para Apache Spark, use o seguinte comando:
    dig dataproccontrol-REGION.googleapis.com A
    

    Use qualquer um dos endereços IPv4 na seção de resposta 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 Gerenciado para Apache Spark, mas não conseguiu fazer escalonar verticalmente ou horizontal de forma manual ou automática. 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 o cluster ser 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 de solução de problemas de cluster

Nesta seção, fornecemos mais orientações sobre como resolver problemas comuns que podem impedir a criação de clusters do Serviço Gerenciado para Apache Spark.

Quando um cluster do Serviço Gerenciado para Apache Spark 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

Veja a seguir os 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: relacionadas 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 de clusters disponíveis no Cloud Logging.

  1. Acesse a Análise de registros: abra a Análise de registros no console do Google Cloud .
  2. Filtre os clusters do Serviço Gerenciado para Apache Spark:
    • No menu suspenso Recurso, selecione Cloud Managed Service for Apache Spark Cluster.
    • Insira seu cluster_name e project_id. Também é possível filtrar por location (região).
  3. Analisar entradas de registro:
    • Procure mensagens de nível ERROR ou WARNING que ocorrem perto do momento da falha na criação do cluster.
    • Preste atenção aos registros dos componentes master-startup, worker-startup e agent para receber insights sobre problemas no nível da VM ou no agente do Serviço Gerenciado para Apache Spark.
    • Para entender os problemas de tempo de inicialização da VM, filtre os registros por resource.type="gce_instance" e procure mensagens dos nomes de instância 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

Nesta seção, descrevemos os motivos comuns para falhas na criação de clusters do Serviço Gerenciado para Apache Spark e oferecemos dicas para resolver problemas de cluster.

Permissões do IAM insuficientes

A conta de serviço da VM usada pelo cluster do Serviço Gerenciado para Apache Spark 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 de worker do Serviço Gerenciado para Apache Spark (roles/dataproc.worker). Esse papel tem as permissões mínimas necessárias para que o Serviço Gerenciado para Apache Spark 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 o 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 do 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 Serviço Gerenciado para Apache Spark consomem recursos do Compute Engine e de outros serviços do Google Cloud . Exceder as cotas do projeto ou regionais pode causar falhas na criação do cluster.

Dicas para solução de problemas:

  • Revise 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 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 Serviço Gerenciado para Apache Spark criados com versões de imagem 2.2+ 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 do Private Service Connect necessários estão configurados corretamente para as APIs do Google de que o serviço gerenciado para Apache Spark 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 excessivamente 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 os 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, o 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 de DNS para as APIs do Google e todos os serviços internos ou externos.

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 siga estas 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 para endpoints relevantes.

Falhas na ação de inicialização

As ações de inicialização do Serviço Gerenciado para Apache Spark 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:

  • 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 de cluster no Cloud Logging.
  • Verifique os caminhos e as permissões do 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 os scripts do Cloud Storage.
  • Depurar a lógica do script: teste a lógica do script em uma VM separada do Compute Engine que imite o ambiente do cluster para identificar erros. Adicione a geração de registros detalhada ao script.

Disponibilidade de recursos regionais (falta de estoque)

Às vezes, um tipo de máquina ou recurso em uma região ou zona fica temporariamente indisponível (falta de estoque). Normalmente, isso resulta em erros RESOURCE_EXHAUSTED 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 o posicionamento de zona automática: use o recurso de posicionamento de zona automática do Serviço Gerenciado para Apache Spark para selecionar automaticamente uma zona com capacidade.
  • Ajuste o tipo de máquina: se 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.

Entrar em contato com o Cloud Customer Care

Se você continuar tendo problemas de falha no cluster, entre em contato com o Cloud Customer Care. Descreva o problema de falha do cluster e as 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 do Google Cloud oficialmente compatível. Use a ferramenta gcpdiag para identificar e corrigir problemas no projeto do 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 cluster do Serviço Gerenciado para Apache Spark realizando as seguintes 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 de cluster do Serviço Gerenciado para Apache Spark.
  • 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á realizar uma verificação de conectividade de rede.
  • Configuração incorreta entre projetos: verifica contas de serviço entre projetos e analisa outros papéis e a aplicação de políticas da organização.
  • Papéis do IAM de rede de nuvem privada virtual compartilhada ausentes: se o cluster do Serviço Gerenciado para Apache Spark usar uma rede VPC compartilhada, verifique se os papéis de conta de serviço necessários foram adicionados.
  • Falhas na ação de inicialização: avalia os registros da Análise de registros para descobrir falhas e tempos limite do script de ação de inicialização.

Para uma lista de etapas do dataproc gcpdiag, incluindo as de criação de cluster, consulte Etapas do Serviço Gerenciado para Apache Spark.

Execute o comando gcpdiag.

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

Console doGoogle Cloud

  1. Preencha e copie o comando a seguir.
  2. gcpdiag runbook managed-spark/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Abra o console do Google Cloud 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 managed-spark/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 de destino do Serviço Gerenciado para Apache Spark no seu projeto.
    • OPTIONAL_PARAMETERS: adicione um ou mais dos parâmetros opcionais a seguir. Esses parâmetros são obrigatórios se o cluster tiver sido excluído.
      • cluster_uuid: o UUID do cluster de destino do Serviço Gerenciado para Apache Spark no seu projeto.
      • service_account: a conta de serviço da VM do cluster do Serviço Gerenciado para Apache Spark.
      • subnetwork: o caminho de URI completo da sub-rede do cluster do Serviço Gerenciado para Apache Spark.
      • internal_ip_only: verdadeiro ou falso
      • cross_project: o ID entre projetos se o cluster do Serviço Gerenciado para Apache Spark 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.

A seguir