Resolver problemas de criação de clusters

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 Dataproc fazendo as seguintes verificações:

  • Erros de falta de estoque:avalia os registros do Logs Explorer 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 externa e interna. 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 a aplicação de políticas da organização e funções adicionais.
  • Papéis do IAM da VPC compartilhada ausentes:se o cluster do Dataproc usar uma rede VPC compartilhada, verifique a adição de papéis de conta de serviço necessários.
  • Falhas de ação de inicialização: avalia os registros do Logs Explorer para descobrir falhas e timeouts do script de ação de inicialização.

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

Execute o comando gcpdiag.

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

Console do Google Cloud

  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 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 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 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 Dataproc no seu projeto
      • service_account: o cluster do Dataproc conta de serviço da VM
      • 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 Instruções de uso do gcpdiag.

Entender e corrigir erros de criação de cluster

Esta seção lista 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ó mestre 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 do Google 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}: {component}

    Causa: um componente do Dataproc não foi inicializado.

    Solução: consulte:

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

    Causa: o espaço de endereços IP necessário para provisionar os nós de 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 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 expurgado.

    Solução:

    Adicione o código abaixo 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
    
  • A rede não pode ser alcançada: dataproccontrol-REGION.googleapis.com/...*

    Causa: a rede VPC do cluster do Dataproc pode não ter uma rota para a Internet necessária. O agente do Dataproc em execução em VMs de cluster precisa de uma rota para a Internet para acessar a API de controle do Dataproc e receber jobs e status de relatório. A rota padrão gerada pelo sistema para a Internet pode ter sido excluída.

    Solução:

    Adicione uma rota para a Internet à rede VPC do cluster: 0.0.0.0/0 para IPv4 e ::/0 para IPv6 com --next-hop-gateway=default-internet-gateway. Adicione regras de firewall para o controle de acesso.