Risoluzione dei problemi del componente aggiuntivo MeshConfig istio service mesh
Questo articolo illustra come risolvere i problemi che si verificano quando si usa MeshConfig per configurare il componente aggiuntivo Mesh del servizio Istio per Microsoft servizio Azure Kubernetes (AKS).
Configurazione di ConfigMap condiviso
Il componente aggiuntivo Istio MeshConfig consente di configurare determinate impostazioni a livello di mesh. A tale scopo, creare un ConfigMap locale nello spazio dei aks-istio-system
nomi . Quindi, il piano di controllo Istio unisce questo ConfigMap con l'oggetto ConfigMap predefinito. Se esiste un conflitto tra le impostazioni, le impostazioni predefinite hanno la precedenza. Questo approccio è denominato configurazione configmap condivisa.
Creare un oggetto ConfigMap denominato istio-shared-configmap-<asm-revision>
nello spazio dei aks-istio-system
nomi . Ad esempio, se si usa la revisione asm-1-18
, è necessario denominare ConfigMap, istio-shared-configmap-asm-1-18
. Specificare quindi la configurazione mesh all'interno del mesh
campo della data
sezione, come illustrato nel file YAML ConfigMap seguente:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-shared-configmap-asm-1-18
namespace: aks-istio-system
data:
mesh: |-
accessLogFile: /dev/stdout
defaultConfig:
holdApplicationUntilProxyStarts: true
I valori all'interno del defaultConfig
campo sono le impostazioni a livello di mesh per il sidecar Envoy.
Aggiornamenti Canary
Prima di avviare un aggiornamento canary, seguire la configurazione della mesh e il materiale sussidiario per l'aggiornamento per creare un secondo ConfigMap condiviso per la nuova revisione del piano di controllo nello spazio dei aks-istio-system
nomi.
Se non è stato creato un nuovo ConfigMap prima di avviare l'aggiornamento, tutte le funzionalità configurate da ConfigMap condiviso non saranno accessibili. Per risolvere questo problema, creare l'oggetto ConfigMap mancante per la revisione corrispondente e copiare i campi pertinenti dall'oggetto ConfigMap condiviso precedente.
Per altre informazioni, vedere Upgrade Istio-based service mesh add-on add-on for servizio Azure Kubernetes and Istio service mesh add-on minor revision upgrade troubleshooting .For more information, see Upgrade Istio-based service mesh add-on add-on for servizio Azure Kubernetes and Istio service mesh add-on minor revision upgrade troubleshooting.
Valori consentiti, supportati e non consentiti
Il componente aggiuntivo Istio definisce i campi MeshConfig come consentiti e supported
, consentiti ma unsupported
, e disallowed
. Per informazioni sui campi MeshConfig consentiti e supportati per il componente aggiuntivo e vedere una panoramica dei diversi livelli di supporto, vedere Configurare il componente aggiuntivo mesh di servizi basato su Istio per servizio Azure Kubernetes. Se i campi menzionati nella documentazione di Istio upstream non vengono visualizzati nell'elenco elementi consentiti per il componente aggiuntivo, questi campi non sono consentiti.
Elenco di controllo per la risoluzione dei problemi
Passaggio 1: Assicurarsi di modificare l'oggetto ConfigMap corretto
- Assicurarsi di configurare configmap condiviso (ad esempio,
istio-shared-configmap-asm-1-17
) e di non modificare l'oggetto ConfigMap predefinito, ad esempioistio-asm-1-17
. - Assicurarsi che l'oggetto ConfigMap condiviso punti alla revisione corretta nel titolo.
Passaggio 2: Rimuovere i rientri di tabulazione dalla definizione MeshConfig all'interno di ConfigMap condiviso
Nella definizione MeshConfig all'interno di ConfigMap condiviso (in data.mesh
), assicurarsi di usare gli spazi anziché le schede. Rimuovere tutti i caratteri di tabulazioni presenti.
Passaggio 3: Assicurarsi che i campi MeshConfig siano validi
Se i campi non sono riconosciuti o non sono inclusi nell'elenco consenti MeshConfig, gli aggiornamenti a MeshConfig vengono rifiutati. Controllare se i campi MeshConfig desiderati sono consentiti e assicurarsi che i campi siano digitati correttamente.
Passaggio 4: Evitare l'overload CoreDNS
I problemi relativi all'overload CoreDNS potrebbero richiedere di modificare determinate impostazioni DNS Istio, ad esempio il dnsRefreshRate
campo nella definizione Istio MeshConfig.
Passaggio 5: Risolvere i problemi di utilizzo della memoria
Se si verifica un utilizzo elevato della memoria in Envoy, controllare le impostazioni di Envoy per la raccolta dei dati delle statistiche. Se si personalizzano le metriche Istio tramite MeshConfig, tenere presente che alcune metriche possono avere cardinalità elevata e, di conseguenza, causare un footprint di memoria maggiore.
È consigliabile usare il campo nella definizione MeshConfig per ridurre il discoverySelectors
consumo di memoria per Istiod e Envoy. Per altre informazioni, vedere Risoluzione dei problemi generali del componente aggiuntivo service mesh Istio.
Passaggio 6: Core CPU gratuiti
Se tutti i core CPU sono in uso, il concurrency
campo nella definizione MeshConfig potrebbe non essere configurato correttamente. Se questo campo è impostato su zero, Envoy usa tutti i core CPU. In questo caso, rimuovere concurrency
dalla definizione MeshConfig. Se il concurrency
campo non è configurato, le richieste e i limiti della CPU determinano invece il numero di core CPU usati.
Passaggio 7: Correggere le condizioni di corsa pod e sidecar
Se il pod dell'applicazione viene avviato prima dell'avvio del sidecar Envoy, l'applicazione potrebbe non rispondere o potrebbe essere riavviata. Per istruzioni su come evitare questo problema, vedere Pod o contenitori iniziare con problemi di rete se istio-proxy non è pronto. In particolare, è possibile impostare il holdApplicationUntilProxyStarts
campo MeshConfig in defaultConfig
per true
evitare queste condizioni di gara.
Riferimenti
Configurare il componente aggiuntivo mesh di servizi basato su Istio per servizio Azure Kubernetes
Risoluzione dei problemi generali del componente aggiuntivo Mesh di servizi Istio
Risoluzione dei problemi del gateway in ingresso istio service mesh
Risoluzione dei problemi relativi al certificato CA plug-in istio service mesh
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti
Dichiarazione di non responsabilità di contatti di terze parti
Microsoft fornisce informazioni di contatto di terze parti per aiutarti a trovare ulteriori informazioni su questo argomento. Queste informazioni di contatto sono soggette a modifica senza preavviso. Microsoft non garantisce l'accuratezza delle informazioni di contatto di terze parti.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.