Resolver problemas do Cloud Service Mesh passo a passo

Nesta seção, explicamos como solucionar problemas ao usar o Cloud Service Mesh. Se você precisar de mais ajuda, consulte Como receber suporte.

Etapas da solução de problemas

Siga estas etapas gerais para resolver problemas do Cloud Service Mesh:

  1. Use as ferramentas de validação de configurações automatizadas.
  2. Verifique se você tem um problema comum com uma solução conhecida.
  3. Restrinja o escopo do problema.
  4. Analise registros e informações relevantes.
  5. Colete registros de diagnóstico e procure ajuda.

A ferramenta de diagnóstico do Cloud Service Mesh pode detectar problemas comuns de configuração. Instale a ferramenta de solução de problemas usando instructions.

Antes de começar

  1. Verifique se o contexto kubeconfig do cluster está disponível no arquivo kubeconfig. Caso contrário, execute o seguinte comando:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CLUSTER_LOCATION --project=PROJECT_NAME
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • CLUSTER_LOCATION: a zona ou região do cluster.
    • PROJECT_NAME: o nome do projeto
  2. Verifique se o Application Default Credentials foi criado. Se não estiverem, execute um dos seguintes comandos:

    gcloud auth application-default login --billing-project=PROJECT_NAME
    
    gcloud auth application-default set-quota-project PROJECT_NAME
    

    Substitua PROJECT_NAME pelo nome do projeto.

Ver status do plano de controle

Os comandos a seguir podem ajudar a entender o status do plano de controle do Cloud Service Mesh:

Gerenciado

  • Acesse a lista de status de conexão dos clientes no plano de controle do Cloud Service Mesh:

    gcloud beta container fleet mesh debug proxy-status \
        --membership=MEMBERSHIP_NAME \
        --location=MEMBERSHIP_LOCATION \
        --project=PROJECT_NAME
    

    Substitua:

    • MEMBERSHIP_NAME: o nome da sua assinatura.
    • MEMBERSHIP_LOCATION: a região da sua assinatura. É possível verificar o local da assinatura com gcloud container fleet memberships list --project FLEET_PROJECT_ID substituindo FLEET_PROJECT_ID pelo ID do projeto da frota.
    • PROJECT_NAME: o nome do projeto

    A tabela a seguir descreve as possíveis respostas.

    DESCONHECIDO (Padrão) ⁣As informações de status não estão disponíveis ou são desconhecidas.
    SINCRONIZADO O plano de controle enviou a configuração ao cliente e recebeu uma ACK dele.
    ERRO ⁣ O plano de controle enviou a configuração ao cliente e recebeu um NACK do cliente.
    ROUBO O plano de controle enviou a configuração ao cliente, mas não recebeu uma ACK ou uma NACK do cliente.
    NÃO ENVIADO A configuração não foi enviada.
    N/A Não relevante.
    Sem suporte O status da sincronização não é compatível com nossa API de solução de problemas.

No cluster

  • kubectl get pods -n istio-system
  • kubectl describe -n istio-system
  • Para todos os pods no 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 entender a escala da implantação:

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

Conferir configurações de proxy

O comando a seguir pode ajudar você a entender as configurações de proxy do Cloud Service Mesh:

Gerenciado

gcloud beta container fleet mesh debug proxy-config POD_NAME.NAMESPACE \ 
    --type=TYPE \
    --membership=MEMBERSHIP_NAME \
    --location=MEMBERSHIP_LOCATION \
    --project=PROJECT_NAME
  • POD_NAME: o nome do pod.
  • NAMESPACE: o namespace do pod.
  • TYPE: uma destas opções: cluster, listeners, routes, endpoints, bootstrap, registro, secret, all.
  • MEMBERSHIP_NAME: o nome da sua assinatura.
  • MEMBERSHIP_LOCATION: a região da sua assinatura. É possível verificar o local da assinatura com gcloud container fleet memberships list --project FLEET_PROJECT_ID substituindo FLEET_PROJECT_ID pelo ID do projeto da frota.
  • PROJECT_NAME: o nome do projeto

No cluster

Use o istioctl proxy-config para conferir as configurações de proxy para planos de controle no cluster. Para mais informações, consulte Como depurar o Envoy e o istiod (em inglês).

Se o problema persistir, consulte a próxima seção para verificar se ele já é conhecido.

Verificar problemas e soluções comuns

É possível economizar tempo verificando se os sintomas correspondem a um problema nestas seções de problemas e resoluções comuns, agrupadas pela área funcional do Cloud Service Mesh:

Se isso não resolver o problema, veja a próxima seção.

Restringir o escopo do problema

O Cloud Service Mesh consiste em várias tecnologias que funcionam juntas, o que significa que certos tipos de problemas estão associados a áreas ou componentes funcionais específicos. Cada um desses componentes gera registros úteis. Antes de tentar analisar manualmente o volume de informações que eles fornecem, restrinja o escopo da solução de problemas respondendo às seguintes perguntas:

  • O problema ocorre dentro do plano de controle ou do plano de dados, por exemplo, proxies do istiod ou Envoy?
  • Em qual área funcional você está enfrentando o problema, por exemplo: rede, telemetria, segurança etc.?
  • Há perda de tráfego de malha de serviço ampla ou em uma implantação específica?
  • O problema surge ou piora devido à falta de capacidade de escalonamento de tráfego na malha de serviço?
  • O problema causa latência ou outros problemas de desempenho?
  • É possível reproduzir o problema sob demanda?
  • O problema começou após uma alteração de configuração recente no Istio, no GKE etc.?
  • Há um aumento ou pico no tráfego na malha de serviço?
  • Esse cluster tem algum recurso perceptível ativado ou implantações não típicas?
  • Você observa alta utilização da CPU ou da memória? Em caso afirmativo, qual é o uso esperado em grande escala?
  • Há restrições de cota a serem consideradas?

Analisar registros e informações relevantes

Depois de restringir o escopo do problema, concentre-se em determinados registros e informações com mais eficiência. Para saber mais sobre os registros gerados pelo Cloud Service Mesh e como interpretar as informações que eles contêm, consulte Como interpretar os registros do Cloud Service Mesh.