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
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"
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
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.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:
CLUSTER_NAME
: o nome do cluster.COMPUTE_LOCATION
: a região do Compute Engine para o cluster.
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
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:
CLUSTER_NAME
: o nome do cluster.COMPUTE_LOCATION
: a região do Compute Engine para o cluster.
Migre suas cargas de trabalho do pool de nós antigo para o pool de nós recém-criado e monitore o progresso.
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:
CLUSTER_NAME
: o nome do cluster.COMPUTE_LOCATION
: a região do Compute Engine para o cluster.
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.
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:
CLUSTER_NAME
: o nome do cluster.COMPUTE_LOCATION
: a região do Compute Engine para o cluster.
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)"
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)"
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.
Acesse a página Cotas no console do Google Cloud.
Filtre a tabela por "API Cloud Logging".
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 ferramentagcpdiag
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.
- 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
- Preencha e copie o comando a seguir.
- Abra o console do Google Cloud e ative o Cloud Shell. Abrir Console do Cloud
- Cole o comando copiado.
- Execute o comando
gcpdiag
, que faz o download da imagem Dockergcpdiag
. e realiza verificações de diagnóstico. Se aplicável, siga as instruções de saída para corrigir verificações com falha.
gcpdiag runbook gke/logs --project=PROJECT_ID \
--parameter name=GKE_NAME \
--parameter location=LOCATION
Docker
Você pode
executar gcpdiag
usando um wrapper que inicia gcpdiag
em um contêiner do Docker. Docker ou
Podman precisa ser instalado.
- Copie e execute o seguinte comando na estação de trabalho local.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- 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
--project
: o PROJECT_ID--universe-domain
: se aplicável, a Nuvem soberana de parceiro confiável que hospeda o recurso--parameter
ou-p
: parâmetros do runbook
Para conferir uma lista e descrição de todas as flags da ferramenta gcpdiag
, consulte
Instruções de uso do gcpdiag
.