Solução de problemas na geração de registros no GKE


Nesta página, mostramos como investigar e resolver problemas relacionados à geração de registros do GKE.

Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.

Registros de cluster ausentes no Cloud Logging

Verificar se a geração de registros está ativada no projeto

  1. Listar serviços ativados:

    gcloud services list --enabled --filter="NAME=logging.googleapis.com"
    

    A saída a seguir indica que a geração de registros está ativada para o projeto:

    NAME                    TITLE
    logging.googleapis.com  Cloud Logging API
    

    Opcional: verifique os registros no Visualizador de registros para determinar quem desativou a API e quando ela foi desativada:

    protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService"
    protoPayload.response.services="logging.googleapis.com"
    
  2. Se a geração de registros estiver desativada, ative-a:

    gcloud services enable logging.googleapis.com
    

Verifique se a geração de registros está ativada no cluster

  1. Liste os clusters:

    gcloud container clusters list \
        --project=PROJECT_ID \
        '--format=value(name,loggingConfig.componentConfig.enableComponents)' \
        --sort-by=name | column -t
    

    Substitua:

    • PROJECT_ID: é seu ID do projeto no Google Cloud.

    O resultado será assim:

    cluster-1              SYSTEM_COMPONENTS
    cluster-2              SYSTEM_COMPONENTS;WORKLOADS
    cluster-3
    

    Se o valor do cluster estiver vazio, a geração de registros será desativada. Por exemplo, a geração de registros fica desativada para cluster-3 nesta saída.

  2. Ative a geração de registros de cluster se definida como NONE:

    gcloud container clusters update CLUSTER_NAME  \
        --logging=SYSTEM,WORKLOAD \
        --location=COMPUTE_LOCATION
    

    Substitua:

Verificar se os nós nos pools de nós têm o escopo de acesso do Cloud Logging

Um dos escopos a seguir é necessário para que os nós gravem registros no Cloud Logging:

  • https://www.googleapis.com/auth/logging.write
  • https://www.googleapis.com/auth/cloud-platform
  • https://www.googleapis.com/auth/logging.admin
  1. Verifique os escopos configurados em cada pool de nós no cluster:

    gcloud container node-pools list --cluster=CLUSTER_NAME \
        --format="table(name,config.oauthScopes)" \
        --location COMPUTE_LOCATION
    

    Substitua:

    Migre suas cargas de trabalho do pool de nós antigo para o pool de nós recém-criado e monitore o progresso.

  2. Crie novos pools de nós com o escopo de geração de registros correto:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --scopes="gke-default"
    

    Substitua:

Verifique se a conta de serviço do pool de nós tem um papel com as permissões de IAM corretas

A conta de serviço precisa ter um papel que contenha a permissão logging.logEntries.create para criar registros.

  1. Encontre a conta de serviço para cada pool de nós:

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --format="table(name,config.serviceAccount)" \
        --location=COMPUTE_LOCATION
    

    Substitua:

    O resultado será assim:

    NAME          SERVICE_ACCOUNT
    default-pool  gke-cluster-sa@developer.gserviceaccount.com
    

    Se o pool de nós estiver usando a conta de serviço padrão do Compute Engine, será possível descrevê-lo usando o comando a seguir. Como prática recomendada, use uma conta de serviço personalizada com privilégios mínimos para seus pools de nós. A conta de serviço padrão do Compute Engine contém mais do que as permissões mínimas necessárias para executar seus clusters.

    gcloud compute project-info describe --format="table(defaultServiceAccount)"
    
  2. Verifique se os papéis do IAM têm permissões suficientes.

    Veja as permissões contidas nos papéis concedidos a uma conta de serviço específica:

    gcloud projects get-iam-policy PROJECT_ID \
        --flatten="bindings[]" \
        --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \
        --format="table[box](bindings.role)"
    
  3. Conceda um papel que contenha a permissão logging.logEntries.create à conta de serviço. É possível usar um papel predefinido ou criar um papel personalizado.

Verifique se as cotas da API de gravação do Cloud Logging não foram alcançadas

Confirme se você não atingiu as cotas de gravação da API para o Cloud Logging.

  1. Acesse a página Cotas no console do Google Cloud.

    Acesse Cotas

  2. Filtre a tabela por "API Cloud Logging".

  3. Confirme que você não atingiu as cotas.

Como depurar problemas de geração de registros do GKE com o gcpdiag

Se você estiver recebendo registros incompletos ou ausentes do cluster do GKE, use a ferramenta gcpdiag para solução de problemas.

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.

Quando os registros do cluster do GKE está ausente ou incompleto, investigue a causa potencial focando nas seguintes configurações básicas, que são essenciais para funções de registro adequadas:

  • Geração de registros no nível do projeto: garante que o projeto do Google Cloud que hospeda o cluster do GKE tem a API Cloud Logging ativada.
  • Geração de registros no nível do cluster: verifica se a geração de registros está explicitamente ativada na configuração do cluster do GKE.
  • Permissões do pool de nós: confirma se os nós nos pools de nós do cluster têm o escopo "Cloud Logging Write" ativado, permitindo que enviem dados de registro.
  • Permissões da conta de serviço: valida se a conta de serviço usada pelos pools de nós tem as permissões de IAM necessárias para interagir com o Cloud Logging. Especificamente, o papel "roles/logging.logWriter" é normalmente necessário.
  • Cotas de gravação da API Cloud Logging: verifica se as cotas de gravação da API Cloud Logging não foram excedidas dentro do período especificado.

Console do Google Cloud

  1. Preencha e copie o comando a seguir.
  2. gcpdiag runbook gke/logs --project=PROJECT_ID \
        --parameter name=GKE_NAME \
        --parameter location=LOCATION
  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 gke/logs --project=PROJECT_ID \
        --parameter name=GKE_NAME \
        --parameter location=LOCATION

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

Substitua:

  • PROJECT_ID: o ID do projeto que contém o recurso
  • GKE_NAME: o nome do cluster do GKE.
  • LOCATION: a zona ou região do cluster do GKE.

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

Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.