Felsökning av MeshConfig för Istio-tjänstnät
Den här artikeln beskriver hur du felsöker problem som uppstår när du använder MeshConfig för att konfigurera tillägget Istio-tjänstnät för Microsoft Azure Kubernetes Service (AKS).
Konfiguration av delad ConfigMap
Med Istio-tillägget MeshConfig kan du konfigurera vissa mesh-wide-inställningar. Det gör du genom att skapa en lokal ConfigMap i aks-istio-system
namnområdet. Sedan sammanfogar Istio-kontrollplanet den här ConfigMap med standardkonfigurationskartan. (Om det finns en konflikt mellan inställningarna har standardinställningarna företräde.) Den här metoden kallas för en delad ConfigMap-konfiguration.
Skapa en ConfigMap som heter istio-shared-configmap-<asm-revision>
i aks-istio-system
namnområdet. Om du till exempel använder revision asm-1-18
bör du ge ConfigMap istio-shared-configmap-asm-1-18
namnet . Sedan anger du mesh-konfigurationen mesh
i fältet i data
avsnittet, som du ser i följande ConfigMap YAML-fil:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-shared-configmap-asm-1-18
namespace: aks-istio-system
data:
mesh: |-
accessLogFile: /dev/stdout
defaultConfig:
holdApplicationUntilProxyStarts: true
Värdena i defaultConfig
fältet är de nätomfattande inställningarna för envoy-sidovagnen.
Canary-uppgraderingar
Innan du påbörjar en kanarieuppgradering följer du riktlinjerna för mesh-konfiguration och uppgradering för att skapa en andra delad ConfigMap för den nya kontrollplansrevisionen aks-istio-system
i namnområdet.
Om en ny ConfigMap inte skapades innan du påbörjar uppgraderingen kommer inte alla funktioner som konfigurerats av den delade ConfigMap att vara tillgängliga. Åtgärda problemet genom att skapa den saknade ConfigMap för motsvarande revision och kopiera över relevanta fält från den tidigare delade ConfigMap.
Mer information finns i Upgrade Istio-based service mesh add-on for Azure Kubernetes Service and Istio service mesh add-on minor revision upgrade troubleshooting (Uppgradera istio-baserad tjänstnätstillägg för Azure Kubernetes Service och Istio Service Mesh– felsökning av mindre revisionsuppgradering).
Tillåtna, stödda och otillåtna värden
Istio-tillägget anger MeshConfig-fält som tillåtna och supported
, tillåtna men unsupported
, och disallowed
. Mer information om tillåtna och stödda MeshConfig-fält för tillägget och en översikt över de olika supportnivåerna finns i Konfigurera Istio-baserat tjänstnättillägg för Azure Kubernetes Service. Om fält som anges i den överordnade Istio-dokumentationen inte visas i listan över tillåtna för tillägget tillåts inte dessa fält.
Checklista för felsökning
Steg 1: Kontrollera att du redigerar rätt ConfigMap
- Kontrollera att du konfigurerar den delade ConfigMap (till exempel
istio-shared-configmap-asm-1-17
) och inte redigerar standardkonfigurationskartan (till exempelistio-asm-1-17
). - Kontrollera att den delade ConfigMap pekar på rätt revision i rubriken.
Steg 2: Ta bort tabbindrag från MeshConfig-definitionen i den delade ConfigMap
I MeshConfig-definitionen i den delade ConfigMap (under data.mesh
) kontrollerar du att du använder blanksteg i stället för flikar. Ta bort alla tabbtecken som du hittar.
Steg 3: Kontrollera att MeshConfig-fälten är giltiga
Om fälten är okända eller inte ingår i meshconfig-listan avvisas uppdateringar av MeshConfig. Kontrollera om de önskade MeshConfig-fälten är tillåtna och kontrollera att fälten är rättstavade.
Steg 4: Undvik CoreDNS-överlagring
Problem som rör CoreDNS-överbelastning kan kräva att du ändrar vissa Istio DNS-inställningar, till exempel dnsRefreshRate
fältet i Istio MeshConfig-definitionen.
Steg 5: Åtgärda problem med minnesförbrukning
Om du upplever hög minnesförbrukning i Envoy dubbelkollar du dina Envoy-inställningar för insamling av statistikdata. Om du anpassar Istio-mått via MeshConfig bör du komma ihåg att vissa mått kan ha hög kardinalitet och därmed orsaka ett högre fotavtryck för minnet.
Vi rekommenderar att du använder fältet discoverySelectors
i MeshConfig-definitionen för att minska minnesförbrukningen för Istiod och Envoy. Mer information finns i Allmän felsökning av tillägg för Istio-tjänstnät.
Steg 6: Kostnadsfria CPU-kärnor
Om alla CPU-kärnor används concurrency
kan fältet i MeshConfig-definitionen vara felkonfigurerat. Om det här fältet är inställt på noll använder Envoy alla processorkärnor. I det här fallet tar du bort concurrency
från MeshConfig-definitionen. Om fältet concurrency
inte har konfigurerats avgör CPU-begäranden och gränser antalet processorkärnor som används i stället.
Steg 7: Åtgärda skid- och sidovagnsloppsförhållanden
Om programpodden startar innan envoy-sidovagnen startar kan programmet sluta svara eller startas om. Anvisningar om hur du undviker det här problemet finns i Poddar eller containrar börjar med nätverksproblem om istio-proxy inte är redo. Mer specifikt kan du ange holdApplicationUntilProxyStarts
meshconfig-fältet under defaultConfig
för att true
förhindra dessa konkurrensförhållanden.
Referenser
Konfigurera Istio-baserat tjänstnättillägg för Azure Kubernetes Service
Felsökning av mindre revisionsuppgradering för Istio Service Mesh-tillägg
Felsökning av certifikat för Istio Service Mesh-tilläggsprogram för ca-certifikat
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
Ansvarsfriskrivning för tredje part
Microsoft tillhandahåller kontaktinformation från tredje part som hjälper dig att hitta ytterligare information om det här ämnet. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformation från tredje part är korrekt.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.