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
Configurar o complemento de malha de serviço baseado em Istio para o Serviço de Kubernetes do Azure
Solução de problemas gerais do complemento do Service Mesh do Istio
Solução de problemas do gateway de entrada do complemento do Service Mesh do Istio
Solução de problemas de atualização de revisão secundária do complemento do Service Mesh do Istio
Solução de problemas de certificado CA do plug-in do complemento do Service Mesh do Istio
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.