Resolução de problemas do suplemento MeshConfig do Istio Service Mesh
Este artigo aborda como resolver problemas que ocorrem quando utiliza o MeshConfig para configurar o suplemento istio service mesh para o Microsoft Azure Kubernetes Service (AKS).
Configuração de ConfigMap Partilhada
O Suplemento Istio MeshConfig permite-lhe configurar determinadas definições em toda a malha. Para tal, crie um ConfigMap local no aks-istio-system
espaço de nomes. Em seguida, o plano de controlo Istio intercala este ConfigMap com o ConfigMap predefinido. (Se existir um conflito entre as definições, as predefinições têm precedência.) Esta abordagem chama-se configuração configMap partilhada.
Crie um ConfigMap com o nome istio-shared-configmap-<asm-revision>
no aks-istio-system
espaço de nomes. Por exemplo, se utilizar a revisão asm-1-18
, deve atribuir o nome ConfigMap, istio-shared-configmap-asm-1-18
. Em seguida, vai fornecer a configuração de malha no mesh
campo da data
secção, conforme mostrado no seguinte ficheiro 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 definições em toda a malha para o sidecar enviado.
Atualizações canárias
Antes de iniciar uma atualização canária, siga a configuração de malha e a documentação de orientação de atualização para criar um segundo ConfigMap partilhado para a nova revisão do plano de controlo no aks-istio-system
espaço de nomes.
Se não tiver sido criado um novo ConfigMap antes de iniciar a atualização, as funcionalidades configuradas pelo ConfigMap partilhado não estarão acessíveis. Para corrigir este problema, crie o ConfigMap em falta para a revisão correspondente e copie os campos relevantes do ConfigMap partilhado anterior.
Para obter mais informações, veja Upgrade Istio-based service mesh add-on for Azure Kubernetes Service and Istio service mesh add-on minor revision upgrade troubleshooting (Atualizar o suplemento do Service Mesh baseado em Istio para o Azure Kubernetes Service e a resolução de problemas de atualização de revisão secundária do suplemento istio service mesh).
Valores permitidos, suportados e não permitidos
O suplemento Istio designa os campos MeshConfig como permitidos e supported
, permitidos, mas unsupported
, e disallowed
. Para saber mais sobre os campos meshConfig permitidos e suportados para o suplemento e ver uma descrição geral dos diferentes escalões de suporte, veja Configurar o suplemento de malha de serviço baseado em Istio para o Azure Kubernetes Service. Se os campos mencionados na documentação istio a montante não aparecerem na lista de permissões do suplemento, estes campos não são permitidos.
Lista de verificação de solução de problemas
Passo 1: certifique-se de que está a editar o ConfigMap correto
- Confirme que está a configurar o ConfigMap partilhado (por exemplo,
istio-shared-configmap-asm-1-17
) e não está a editar o ConfigMap predefinido (por exemplo,istio-asm-1-17
). - Certifique-se de que o ConfigMap partilhado aponta para a revisão correta no título.
Passo 2: Remover avanços de separador da definição MeshConfig no ConfigMap partilhado
Na definição MeshConfig no ConfigMap partilhado (em data.mesh
), certifique-se de que utiliza espaços em vez de separadores. Remova os carateres de tabulação que encontrar.
Passo 3: certifique-se de que 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 meshConfig, as atualizações ao MeshConfig são rejeitadas. Verifique se os campos meshConfig pretendidos são permitidos e certifique-se de que os campos estão escritos corretamente.
Passo 4: Evitar a sobrecarga do CoreDNS
Os problemas relacionados com a sobrecarga do CoreDNS podem exigir que altere determinadas definições de DNS istio, como o dnsRefreshRate
campo na definição Istio MeshConfig.
Passo 5: Corrigir problemas de consumo de memória
Se ocorrer um elevado consumo de memória no Enviado, verifique novamente as definições do enviado relativamente à recolha de dados de estatísticas. Se estiver a personalizar as métricas istio através do MeshConfig, lembre-se de que determinadas métricas podem ter uma cardinalidade elevada e, portanto, causar uma maior quantidade de memória.
Recomendamos que utilize o discoverySelectors
campo na definição MeshConfig para reduzir o consumo de memória para Istiod e Envoy. Para obter mais informações, veja General Istio service mesh add-on troubleshooting (Resolução de problemas gerais do suplemento istio service mesh).
Passo 6: Núcleos de CPU gratuitos
Se todos os núcleos de CPU estiverem a ser utilizados, o concurrency
campo na definição MeshConfig poderá estar configurado incorretamente. Se este campo estiver definido como zero, o Enviado utiliza todos os núcleos da CPU. Nesta situação, remova concurrency
da definição MeshConfig. Se o concurrency
campo não estiver configurado, os pedidos e limites da CPU determinam o número de núcleos de CPU que são utilizados.
Passo 7: Corrigir condições de corrida do pod e do sidecar
Se o pod da aplicação for iniciado antes do sidecar enviado ser iniciado, a aplicação poderá deixar de responder ou pode reiniciar. Para obter instruções sobre como evitar este problema, veja Pod ou os contentores começam com problemas de rede se o istio-proxy não estiver pronto. Especificamente, pode definir o holdApplicationUntilProxyStarts
campo MeshConfig em defaultConfig
para true
ajudar a evitar estas condições de corrida.
Referências
Configurar o suplemento do Service Mesh baseado em Istio para o Azure Kubernetes Service
Resolução de problemas gerais do suplemento istio service mesh
Resolução de problemas do gateway de entrada do suplemento Istio Service Mesh
Resolução de problemas de atualização de revisão secundária do suplemento Istio Service Mesh
Resolução de problemas de certificados da AC do suplemento istio service mesh
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.