Compartilhar via


Solução de problemas do MeshConfig do complemento de malha de serviço do Istio

Este artigo discute como solucionar problemas que ocorrem quando você usa o MeshConfig para configurar o complemento de malha de serviço do Istio para o AKS (Serviço de Kubernetes do Microsoft Azure).

Configuração compartilhada do ConfigMap

O complemento MeshConfig do Istio permite que você defina determinadas configurações em toda a malha. Para fazer isso, você cria um ConfigMap local no aks-istio-system namespace. Em seguida, o plano de controle do Istio mescla esse ConfigMap com o ConfigMap padrão. (Se houver um conflito entre as configurações, as configurações padrão terão precedência.) Essa abordagem é chamada de configuração compartilhada do ConfigMap.

Crie um ConfigMap nomeado istio-shared-configmap-<asm-revision> no aks-istio-system namespace. Por exemplo, se você usar a revisão asm-1-18, você deve nomear o ConfigMap, istio-shared-configmap-asm-1-18. Em seguida, você fornece a configuração de malha dentro do mesh campo da data seção, conforme mostrado no seguinte arquivo YAML ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio-shared-configmap-asm-1-18
  namespace: aks-istio-system
data:
  mesh: |-
    accessLogFile: /dev/stdout
    defaultConfig:
      holdApplicationUntilProxyStarts: true

Os valores dentro do defaultConfig campo são as configurações de malha para o sidecar do Envoy.

Atualizações do canário

Antes de iniciar uma atualização canário, siga a configuração de malha e as diretrizes de atualização para criar um segundo ConfigMap compartilhado para a nova revisão do aks-istio-system plano de controle no namespace.

Se um novo ConfigMap não tiver sido criado antes de você iniciar a atualização, todos os recursos configurados pelo ConfigMap compartilhado não estarão acessíveis. Para corrigir esse problema, crie o ConfigMap ausente para a revisão correspondente e copie os campos relevantes do ConfigMap compartilhado anterior.

Para obter mais informações, consulte Atualizar o complemento de malha de serviço baseado em Istio para o Serviço de Kubernetes do Azure e a solução de problemas de atualização de revisão secundária do complemento de malha de serviço do Istio.

Valores permitidos, suportados e não permitidos

O complemento do Istio designa os campos MeshConfig como permitidos e supported, permitidos, mas unsupported, e disallowed. Para saber mais sobre os campos MeshConfig permitidos e com suporte para o complemento e ver uma visão geral das diferentes camadas de suporte, consulte Configurar o complemento de malha de serviço baseado em Istio para o Serviço de Kubernetes do Azure. Se os campos mencionados na documentação upstream do Istio não aparecerem na lista de permissões do complemento, esses campos não serão permitidos.

Lista de verificação de solução de problemas

Etapa 1: verifique se você está editando o ConfigMap correto

  • Verifique se você está configurando o ConfigMap compartilhado (por exemplo, istio-shared-configmap-asm-1-17) e não editando o ConfigMap padrão (por exemplo, istio-asm-1-17).
  • Certifique-se de que o ConfigMap compartilhado aponte para a revisão correta em seu título.

Etapa 2: Remover recuos de tabulação da definição de MeshConfig dentro do ConfigMap compartilhado

Na definição de MeshConfig dentro do ConfigMap compartilhado (em data.mesh), certifique-se de usar espaços em vez de guias. Remova todos os caracteres de tabulação que encontrar.

Etapa 3: Verificar se os campos MeshConfig são válidos

Se os campos não forem reconhecidos ou não estiverem incluídos na lista de permissões do MeshConfig, as atualizações do MeshConfig serão rejeitadas. Verifique se os campos MeshConfig desejados são permitidos e certifique-se de que os campos estejam escritos corretamente.

Etapa 4: evitar a sobrecarga do CoreDNS

Problemas relacionados à sobrecarga do CoreDNS podem exigir que você altere determinadas configurações de DNS do Istio, como o dnsRefreshRate campo na definição do Istio MeshConfig.

Etapa 5: Corrigir problemas de consumo de memória

Se você tiver um alto consumo de memória no Envoy, verifique novamente as configurações do Envoy para coleta de dados estatísticos. Se você estiver personalizando as métricas do Istio por meio do MeshConfig, lembre-se de que determinadas métricas podem ter alta cardinalidade e, portanto, causar um maior volume de memória.

Recomendamos que você use o discoverySelectors campo na definição de MeshConfig para reduzir o consumo de memória para Istiod e Envoy. Para obter mais informações, consulte Solução de problemas gerais do complemento do Service Mesh do Istio.

Etapa 6: Núcleos de CPU livres

Se todos os núcleos de CPU estiverem em uso, o concurrency campo na definição de MeshConfig poderá estar configurado incorretamente. Se esse campo estiver definido como zero, o Envoy usará todos os núcleos da CPU. Nessa situação, remova concurrency da definição de MeshConfig. Se o concurrency campo não estiver configurado, as solicitações e os limites da CPU determinarão o número de núcleos da CPU que são usados.

Etapa 7: corrigir as condições de corrida de pod e sidecar

Se o pod do aplicativo for iniciado antes do início do sidecar do Envoy, o aplicativo poderá parar de responder ou poderá ser reiniciado. Para obter instruções sobre como evitar esse problema, consulte Pod ou contêineres começam com problemas de rede se istio-proxy não estiver pronto. Especificamente, você pode definir o holdApplicationUntilProxyStarts campo MeshConfig em defaultConfig como true para ajudar a evitar essas condições de corrida.

Referências

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Aviso de isenção de responsabilidade para contatos de terceiros

A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.