Resolva problemas do Cloud Service Mesh passo a passo

Esta secção explica como resolver problemas quando usa o Cloud Service Mesh. Se precisar de assistência adicional, consulte a secção Receber apoio técnico.

Passos de resolução de problemas

Siga estes passos gerais para resolver problemas do Cloud Service Mesh:

  1. Use as ferramentas de validação de configuração automática.
  2. Verifique se tem um problema comum com uma solução conhecida.
  3. Restrinja o âmbito do problema.
  4. Reveja os registos e as informações relevantes.
  5. Recolha registos de diagnóstico e procure ajuda.

Use ferramentas de validação automáticas

O Cloud Service Mesh inclui ferramentas de diagnóstico e validação de configuração automatizadas que podem resolver problemas e ajudar a evitá-los no futuro. As secções seguintes explicam como usar estas ferramentas.

istioctl analyze

A ferramenta de diagnóstico istioctl analyze pode detetar problemas de configuração comuns. Instale a app istioctl seguindo estas instruções.

istioctl analyze lê uma configuração de cluster e, se encontrar um problema, fornece mensagens informativas e sugere soluções. Pode ser executado num cluster ativo ou num conjunto de ficheiros de configuração local. Também pode ser executado em função de uma combinação dos dois, o que lhe permite encontrar problemas antes de aplicar alterações a um cluster. Para mais informações, consulte o artigo Diagnostique a sua configuração com o istioctl analyze. Para mais informações sobre os erros que o istioctl analyze deteta, consulte o artigo Mensagens de análise da configuração.

Analise um cluster ativo

Analise um cluster ativo através do seguinte comando.

istioctl analyze -A

Se o istioctl analyze detetar um problema com a sua configuração, apresenta uma mensagem com informações úteis para o resolver, se for conhecido. Por exemplo, se cometer o erro comum de não etiquetar corretamente o espaço de nomes para ativar a injeção de sidecar do Istio, é gerada a seguinte mensagem:

Warn [IST0102] (Namespace default) The namespace is not enabled for Istio injection.
Run 'kubectl label namespace default istio-injection=enabled' to enable it,
or 'kubectl label namespace default istio-injection=disabled'
to explicitly mark it as not needing injection

Se o problema persistir, consulte a secção seguinte para verificar se o seu problema já é conhecido.

Verifique problemas e soluções comuns

Pode poupar tempo ao verificar se os seus sintomas correspondem a um problema nestas secções de problemas e resoluções comuns, agrupadas por área funcional do Cloud Service Mesh:

Se isto não resolver o problema, consulte a secção seguinte.

Restrinja o âmbito do problema

A malha de serviços na nuvem consiste em várias tecnologias que funcionam em conjunto, o que significa que determinados tipos de problemas estão associados a áreas funcionais ou componentes específicos. Cada um destes componentes gera os seus próprios registos úteis. Antes de tentar analisar manualmente o volume de informações que fornecem, restrinja o âmbito da resolução de problemas respondendo às seguintes perguntas:

  • O problema ocorre no plano de controlo ou no plano de dados, por exemplo, proxies istiod ou Envoy?
  • Em que área funcional está a ter o problema, por exemplo, rede, telemetria, segurança, etc.?
  • Existe uma perda de tráfego ao nível da malha de serviços ou numa implementação específica?
  • O problema aparece ou agrava-se devido à incapacidade de dimensionar o tráfego na malha de serviços?
  • O problema causa latência ou outros problemas de desempenho?
  • Consegue reproduzir o problema a pedido?
  • O problema começou após uma alteração de configuração recente no Istio, GKE, etc.?
  • Existe um aumento ou um pico no tráfego na malha de serviços?
  • Este cluster tem funcionalidades notáveis ativadas ou implementações não típicas?
  • Observa uma utilização elevada da CPU ou da memória? Se sim, qual é a utilização esperada em grande escala?
  • Existem restrições de quota a ter em conta?

Veja o estado do plano de controlo

Os seguintes comandos podem ajudar a compreender o estado do plano de controlo da Cloud Service Mesh:

  • kubectl get pods -n istio-system
  • kubectl describe -n istio-system
  • Para todos os agrupamentos em istio-system: kubectl logs -n istio-system -l istio --all-containers
  • istioctl version
  • istioctl proxy-status
  • kubectl get configmap istio -o yaml && kubectl get configmap istio-sidecar-injector -o yaml
  • kubectl top pods -n istio-system

Use os seguintes comandos para compreender a escala da implementação:

  • kubectl get nodes
  • kubectl get services --all-namespaces
  • kubectl get pods --all-namespaces

Reveja os registos e as informações relevantes

Depois de restringir o âmbito do problema, pode concentrar-se em determinados registos e informações de forma mais eficaz. Para saber mais acerca dos registos que o Cloud Service Mesh gera e como interpretar as informações que contêm, consulte o artigo Interpretar registos do Cloud Service Mesh.