Este documento ajuda a resolver problemas de observabilidade no Google Distributed Cloud. Se tiver algum destes problemas, reveja as correções e as soluções alternativas sugeridas.
Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud. Também pode consultar o artigo Receber apoio técnico para mais informações sobre recursos de apoio técnico, incluindo o seguinte:
- Requisitos para abrir um registo de apoio ao cliente.
- Ferramentas para ajudar a resolver problemas, como a configuração do ambiente, os registos e as métricas.
- Componentes suportados.
Os registos de auditoria do Google Cloud não são recolhidos
Os registos de auditoria do Google Cloud estão ativados por predefinição, a menos que exista uma flagdisableCloudAuditLogging
definida na secção clusterOperations
da configuração do cluster.
Se os registos de auditoria da nuvem estiverem ativados, as autorizações são o motivo mais comum para os registos não serem recolhidos. Neste cenário, as mensagens de erro de autorização recusada são apresentadas no contentor do proxy dos registos de auditoria do Cloud.
O contentor proxy dos registos de auditoria do Google Cloud é executado como um DaemonSet em todos os clusters do Google Distributed Cloud.Se vir erros de autorização, siga os passos para resolver problemas de autorização.
Outra causa possível é o seu projeto ter atingido o limite de contas de serviço suportado. Consulte o artigo Conta de serviço dos registos de auditoria da nuvem divulgada.
kube-state-metrics
métricas não são recolhidas
kube-state-metrics
(KSM) é executado como uma implementação de réplica única no cluster e gera métricas em quase todos os recursos no cluster. Quando o KSM e o
gke-metrics-agent
são executados no mesmo nó, existe um maior risco de indisponibilidade
entre os agentes de métricas em todos os nós.
As métricas KSM têm nomes que seguem o padrão kube_<ResourceKind>
, como
kube_pod_container_info
. As métricas que começam com kube_onpremusercluster_
são do controlador do cluster no local e não do KSM.
Se as métricas de KSM estiverem em falta, reveja os seguintes passos de resolução de problemas:
- No Cloud Monitoring, verifique a CPU, a memória e a contagem de reinícios do KSM através das métricas da API de resumo, como
kubernetes.io/anthos/container/...
. Esta é uma pipeline separada com o KSM. Confirme que o KSM Pod não está limitado por não ter recursos suficientes.- Se estas métricas da API de resumo não estiverem disponíveis para o KSM,
gke-metrics-agent
no mesmo nó, provavelmente, também tem o mesmo problema.
- Se estas métricas da API de resumo não estiverem disponíveis para o KSM,
- No cluster, verifique o estado e os registos do pod KSM e do pod
gke-metrics-agent
no mesmo nó com o KSM.
kube-state-metrics
loop de falhas
Sintoma
Não estão disponíveis métricas de kube-state-metrics
(KSM) no Cloud Monitoring.
Causa
Este cenário é mais provável em clusters grandes ou clusters com grandes quantidades de recursos. O KSM é executado como uma implementação de réplica única e lista quase todos os recursos no cluster, como pods, implementações, DaemonSets, ConfigMaps, segredos e volumes persistentes. As métricas são geradas em cada um destes objetos de recursos. Se algum dos recursos tiver muitos objetos, como um cluster com mais de 10 000 pods, o KSM pode ficar sem memória.
Versões afetadas
Este problema pode ocorrer em qualquer versão do Google Distributed Cloud.
O limite de CPU e memória predefinido foi aumentado nas últimas versões do Google Distributed Cloud, pelo que estes problemas de recursos devem ser menos comuns.
Correção e solução alternativa
Para verificar se o seu problema se deve a problemas de falta de memória, reveja os seguintes passos:
- Use
kubectl describe pod
oukubectl get pod -o yaml
e verifique a mensagem de estado de erro. - Verifique a métrica de consumo e utilização de memória para o KSM e confirme se está a atingir o limite antes de ser reiniciado.
Se confirmar que os problemas de falta de memória são o problema, use uma das seguintes soluções:
Aumente o pedido e o limite de memória para o KSM.
Para as versões 1.16.0 ou posteriores do Google Distributed Cloud, o Google Cloud Observability gere o KSM. Para atualizar o KSM, consulte o artigo Substituir os pedidos e os limites predefinidos de CPU e memória para um componente do Stackdriver.
Para versões anteriores à 1.16.0, para ajustar a CPU e a memória do KSM, use o resourceOverride do recurso personalizado do Stackdriver para
kube-state-metrics
.
Reduza o número de métricas do KSM.
Para o Google Distributed Cloud 1.13, o KSM expõe apenas um número mais pequeno de métricas denominado Métricas principais por predefinição. Este comportamento significa que a utilização de recursos é inferior à das versões anteriores, mas pode seguir o mesmo procedimento para reduzir ainda mais o número de métricas do KSM.
Para versões do Google Distributed Cloud anteriores à 1.13, o KSM usa as sinalizações predefinidas. Esta configuração expõe um grande número de métricas.
gke-metrics-agent
loop de falhas
Se gke-metrics-agent
só tiver problemas de falta de memória no nó onde kube-state-metrics
existe, a causa é um grande número de métricas kube-state-metrics
. Para mitigar este problema, reduza a escala do stackdriver-operator
e modifique o KSM para expor um pequeno conjunto de métricas necessárias, conforme detalhado na secção anterior.
Não se esqueça de aumentar novamente a escala stackdriver-operator
após a atualização do cluster para o Google Distributed Cloud 1.13, em que o KSM expõe por predefinição um número menor de métricas principais.
gke-metric-agent
. Pode ajustar a CPU e a memória de todos os gke-metrics-agent
Pods adicionando o campo resourceAttrOverride
ao recurso personalizado do Stackdriver.
stackdriver-metadata-agent
loop de falhas
Sintoma
Não está disponível nenhuma etiqueta de metadados do sistema quando filtra métricas no Cloud Monitoring.
Causa
O caso mais comum de stackdriver-metadata-agent
reinícios constantes deve-se a eventos de falta de memória. Este evento é semelhante a kube-state-metrics
. Embora o comando
stackdriver-metadata-agent
não liste todos os recursos, continua a listar todos os
objetos para os tipos de recursos relevantes, como Pods, Deployments e
NetworkPolicy. O agente é executado como uma implementação de réplica única, o que aumenta o risco de eventos sem memória se o número de objetos for demasiado elevado.
Versão afetada
Este problema pode ocorrer em qualquer versão do Google Distributed Cloud.
O limite predefinido de CPU e memória foi aumentado nas últimas versões do Google Distributed Cloud, pelo que estes problemas de recursos devem ser menos comuns.
Correção e solução alternativa
Para verificar se o seu problema se deve a problemas de falta de memória, reveja os seguintes passos:
- Use
kubectl describe pod
oukubectl get pod -o yaml
e verifique a mensagem de estado de erro. - Verifique a métrica de consumo e utilização de memória para
stackdriver-metadata-agent
e confirme se está a atingir o limite antes de o dispositivo ser reiniciado.
resourceAttrOverride
do recurso personalizado do Stackdriver.
metrics-server
loop de falhas
Sintoma
A escala automática horizontal de pods e o kubectl top
não funcionam no seu cluster.
Causa e versões afetadas
Este problema não é muito comum, mas é causado por erros de falta de memória em grandes clusters ou em clusters com uma elevada densidade de pods.
Este problema pode ocorrer em qualquer versão do Google Distributed Cloud.
Correção e solução alternativa
Aumente os limites de recursos do servidor de métricas.
Na versão 1.13 e posteriores do Google Distributed Cloud, o espaço de nomes de metrics-server
e a respetiva configuração foram movidos de kube-system
para
gke-managed-metrics-server
.
metrics-server-operator
e altere manualmente o pod metrics-server
.
Nem todos os recursos são removidos durante a eliminação da conta de serviço dos registos de auditoria do Google Cloud
Quando elimina uma conta de serviço usada para os registos de auditoria do Cloud, nem todos os Google Cloud recursos são eliminados. Se eliminar e recriar rotineiramente contas de serviço usadas para registos de auditoria do Cloud, o registo de auditoria acaba por falhar.
Sintoma
As mensagens de erro de autorização recusada são apresentadas no contentor de proxy dos registos de auditoria do Cloud.
Para confirmar que a falha do registo de auditoria é causada por este problema, execute o seguinte comando:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://gkehub.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global/features/cloudauditlogging
Substitua PROJECT_NUMBER
pelo número do seu projeto.
A resposta devolve todas as contas de serviço usadas com os registos de auditoria do Cloud no projeto, incluindo as contas de serviço que foram eliminadas.
Causa e versões afetadas
Nem todos os recursos do Google Cloud são removidos quando elimina uma conta de serviço usada para os registos de auditoria do Cloud e, eventualmente, atinge o limite de 1000 contas de serviço para o projeto.
Este problema pode ocorrer em qualquer versão do Google Distributed Cloud.
Correção e solução alternativa
Crie uma variável de ambiente que contenha uma lista separada por vírgulas de todas as contas de serviço que quer manter. Coloque cada email da conta de serviço entre aspas simples e coloque toda a lista entre aspas duplas. Pode usar o seguinte como ponto de partida:
SERVICE_ACCOUNT_EMAILS="'SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com'"
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.SERVICE_ACCOUNT_NAME
: o nome da conta de serviço.
A lista concluída deve ser semelhante ao seguinte exemplo:
"'sa_name1@example-project-12345.iam.gserviceaccount.com','sa_name2@example-project-12345.iam.gserviceaccount.com','sa_name3@example-project-12345.iam.gserviceaccount.com'"
Execute o seguinte comando para remover a funcionalidade Cloud Audit Logs do projeto:
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://gkehub.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/FLEET_REGION /features/cloudauditlogging
Substitua o seguinte:
PROJECT_NUMBER
: o número do projeto.FLEET_REGION
: a localização da subscrição da frota para os seus clusters. Pode ser uma região específica, comous-central1
ouglobal
. Pode executar o comandogcloud container fleet memberships list
para obter a localização da subscrição.
Este comando elimina completamente todas as contas de serviço.
Recrie a funcionalidade de registos de auditoria do Cloud apenas com as contas de serviço que quer manter:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://gkehub.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/FLEET_REGION/features?feature_id=cloudauditlogging \ -d '{"spec":{"cloudauditlogging":{"allowlistedServiceAccounts":[$SERVICE_ACCOUNT_EMAILS]}}}'
As etiquetas de metadados desaparecem das métricas
Sintoma
As etiquetas de metadados, por exemplo, node_name, não são preenchidas no Cloud Monitoring.
Causa e versões afetadas
Este problema pode ocorrer em qualquer versão do Google Distributed Cloud.
Correção e solução alternativa
Quaisquer alterações ao pod repõem as etiquetas de metadados. Por exemplo, executar comandos como kubectl rollout restart deployment <workload_name>
.
O que se segue?
Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud. Também pode consultar o artigo Receber apoio técnico para mais informações sobre recursos de apoio técnico, incluindo o seguinte:
- Requisitos para abrir um registo de apoio ao cliente.
- Ferramentas para ajudar a resolver problemas, como a configuração do ambiente, os registos e as métricas.
- Componentes suportados.