Dela via


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-18bör du ge ConfigMap istio-shared-configmap-asm-1-18namnet . 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 exempel istio-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

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.