Risoluzione dei problemi relativi al componente aggiuntivo MeshConfig della mesh del servizio Istio
Questo articolo illustra come risolvere i problemi che si verificano quando si usa MeshConfig per configurare il componente aggiuntivo Mesh del servizio Istio per il servizio Microsoft Azure Kubernetes.
Configurazione di ConfigMap condivisa
Il componente aggiuntivo Istio MeshConfig consente di configurare determinate impostazioni a livello di mesh. A tale scopo, si crea una configmap locale nello spazio dei aks-istio-system
nomi . Il piano di controllo Istio unisce quindi questa configmap con la configmap predefinita. 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 della 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 la sidecar Envoy.
Aggiornamenti canary
Prima di avviare un aggiornamento canary, seguire le indicazioni per la configurazione della mesh e l'aggiornamento per creare una seconda configmap condivisa per la nuova revisione del piano di controllo nello spazio dei aks-istio-system
nomi.
Se non è stata creata una nuova configmap prima di avviare l'aggiornamento, le funzionalità configurate dalla configmap condivisa non saranno accessibili. Per risolvere questo problema, creare la configmap mancante per la revisione corrispondente e copiare i campi pertinenti dalla configmap condivisa precedente.
Per altre informazioni, vedere Upgrade Istio-based service mesh add-on for Azure Kubernetes Service and Istio service mesh add-on minor revision upgrade troubleshooting (Aggiorna componente aggiuntivo per la mesh di servizi Istio per il servizio Azure Kubernetes e la risoluzione dei problemi relativi all'aggiornamento delle revisioni secondarie).
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 del servizio basato su Istio per il servizio Azure Kubernetes. Se i campi indicati nella documentazione di Istio upstream non vengono visualizzati nell'elenco consentiti per il componente aggiuntivo, questi campi non sono consentiti.
Elenco di controllo per la risoluzione dei problemi
Passaggio 1: Assicurarsi di modificare la configmap corretta
- Assicurarsi di configurare la configmap condivisa , ad esempio ,
istio-shared-configmap-asm-1-17
e di non modificare la configmap predefinita,istio-asm-1-17
ad esempio . - Assicurarsi che la configmap condivisa punti alla revisione corretta nel titolo.
Passaggio 2: Rimuovere i rientri di tabulazione dalla definizione MeshConfig all'interno della configmap condivisa
Nella definizione MeshConfig all'interno della configmap condivisa (in data.mesh
), assicurarsi di usare spazi anziché schede. Rimuovere tutti i caratteri di tabulato trovati.
Passaggio 3: Assicurarsi che i campi MeshConfig siano validi
Se i campi non sono riconosciuti o non sono inclusi nell'elenco degli elementi consentiti meshconfig, gli aggiornamenti di 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 correlati all'overload CoreDNS potrebbero richiedere la modifica di alcune impostazioni DNS istio, ad esempio il dnsRefreshRate
campo nella definizione di Istio MeshConfig.
Passaggio 5: Risolvere i problemi di utilizzo della memoria
Se si verifica un consumo elevato di memoria in Envoy, controllare di più le impostazioni di Envoy per la raccolta dei dati delle statistiche. Se si personalizzano le metriche di Istio tramite MeshConfig, tenere presente che alcune metriche possono avere cardinalità elevata e, pertanto, causare un footprint di memoria superiore.
È consigliabile usare il discoverySelectors
campo nella definizione MeshConfig per ridurre il consumo di memoria per Istiod e Envoy. Per altre informazioni, vedere Risoluzione dei problemi generali della mesh del servizio 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 il numero di core CPU usati.
Passaggio 7: Correggere le condizioni di corsa di pod e sidecar
Se il pod dell'applicazione viene avviato prima dell'avvio della sidecar Envoy, l'applicazione potrebbe non rispondere o riavviarla. Per istruzioni su come evitare questo problema, vedere Pod o contenitori che iniziano con problemi di rete se istio-proxy non è pronto. In particolare, è possibile impostare il holdApplicationUntilProxyStarts
campo MeshConfig in defaultConfig
su per true
evitare queste condizioni di gara.
Riferimenti
Configurare il componente aggiuntivo Service Mesh basato su Istio per il servizio Azure Kubernetes
Risoluzione dei problemi generali del componente aggiuntivo per la mesh del servizio Istio
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.