Dela via


Felsökning av ingressgateway för Istio-tjänstnät

I den här artikeln beskrivs hur du felsöker ingressgatewayproblem i tillägget Istio Service Mesh för Azure Kubernetes Service (AKS). Istio-ingressgatewayen är en Envoy-baserad omvänd proxy som du kan använda för att dirigera inkommande trafik till arbetsbelastningar i nätet.

För det Istio-baserade service mesh-tillägget erbjuder vi följande alternativ för ingressgateway:

  • En intern ingressgateway som använder en privat IP-adress.

  • En extern ingressgateway som använder en offentligt tillgänglig IP-adress.

Tillägget distribuerar Istio-ingressgatewaypoddar och distributioner per revision. Om du utför en kanarieuppgradering och har två kontrollplansrevisioner installerade i klustret kan du behöva felsöka flera ingressgatewaypoddar i båda revisionerna.

Checklista för felsökning

Steg 1: Kontrollera att inga brandväggs- eller NSG-regler blockerar ingressgatewayen

Kontrollera att du inte har brandväggs- eller NSG-regler (Network Security Group) som blockerar trafik till ingressgatewayen. Du måste uttryckligen lägga till en DNAT-regel (Destination Network Address Translation) för att tillåta inkommande trafik via Azure Firewall till ingressgatewayen.

Steg 2: Konfigurera gatewayer, virtuella tjänster och målregler korrekt

Följ dessa steg när du konfigurerar gatewayer, virtuella tjänster och målregler för trafikroutning via ingressgatewayen:

  1. Kontrollera att ingressgatewayväljaren i gatewayresursen är inställd på något av följande textvärden om du använder en extern eller intern gateway:

    • istio: aks-istio-ingressgateway-external
    • istio: aks-istio-ingressgateway-internal
  2. Kontrollera att portarna är korrekt inställda i gatewayer och virtuella tjänster. För gatewayen ska porten vara inställd på 80 för http eller 443 för https. För den virtuella tjänsten ska porten anges till den port som motsvarande tjänst för programmet lyssnar på.

  3. Kontrollera att tjänsten exponeras inom specifikationen hosts för både gatewayen och den virtuella tjänsten. Om du får problem som är relaterade till Host huvudet i begärandena kan du prova att lägga till alla värdar som innehåller ett asterisk jokertecken ("*" i listan över tillåtna värdar, till exempel gatewaykonfiguration. Vi rekommenderar dock att du inte ändrar listan över tillåtna som en produktionspraxis. Dessutom bör specifikationen hosts konfigureras explicit.

Steg 3: Åtgärda hälsotillståndet för ingressgatewaypodden

Om ingressgatewaypodden kraschar eller inte visas i redo tillstånd kontrollerar du att istio daemon-kontrollplanetsistiod podd är i klart tillstånd. Ingressgatewayen är beroende av att istiod versionen är klar.

istiod Om podden inte visas i klart tillstånd kontrollerar du att de anpassade Istio-resursdefinitionerna (CRD) och base Helm-diagrammet är korrekt installerade. Gör detta genom att köra följande kommando:

helm ls --all --all-namespaces

Du kan se ett bredare fel där tilläggsinstallationen inte har konfigurerats specifikt för ingressgatewayen.

istiod Om podden är felfri, men ingressgatewaypoddarna inte svarar, kontrollerar du följande ingressgatewayresurser i aks-istio-ingress namnområdet för att samla in mer information:

  • Helm-version
  • Distribution
  • Tjänst

Dessutom hittar du mer information om gateway- och sidovagnsfelsökning i felsökning av Allmänt Istio Service Mesh-tillägg.

Steg 4: Konfigurera resursanvändning

Hög resursanvändning inträffar när standardinställningarna för min/max-replikering för Istiod och gatewayerna inte räcker till. I det här fallet ändrar du konfigurationer för horisontell autoskalning av poddar.

Steg 5: Felsöka den säkra ingressgatewayen

När en extern ingressgateway har konfigurerats för att exponera en säker HTTPS-tjänst med enkel eller ömsesidig TLS följer du dessa felsökningssteg:

  1. Kontrollera att värdena för INGRESS_HOST_EXTERNAL miljövariablerna och SECURE_INGRESS_PORT_EXTERNAL är giltiga baserat på utdata från följande kommando:

    kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
    
  2. Sök efter felmeddelanden i gatewaykontrollantens loggar:

    kubectl logs -n aks-istio-ingress <gateway-service-pod>
    
  3. Kontrollera att hemligheterna har skapats i aks-istio-ingress namnområdet:

    kubectl -n aks-istio-ingress get secrets
    

I exemplet i Secure ingress gateway for Istio service mesh add-on for Azure Kubernetes Service (Skydda ingressgateway för Istio Service Mesh-tillägg för Azure Kubernetes Service) bör hemligheten productpage-credential visas.

När du har aktiverat tillägget för Azure Key Vault-hemlighetsprovidern måste du bevilja åtkomst för den användartilldelade hanterade identiteten för tillägget till Azure Key Vault. Om du konfigurerar åtkomsten till Azure Key Vault på ett felaktigt sätt förhindras hemligheten productpage-credential från att skapas.

När du har skapat resursen SecretProviderClass kontrollerar du att hemligheter synkroniseras från Azure Key Vault till klustret genom att se till att exempelpodden secrets-store-sync-productpage som refererar till den här resursen har distribuerats.

Steg 6: Anpassa tjänstinställningar för inkommande gateway

Tillägget stöder också anpassning av Kubernetes-tjänsten för Istio-ingressgatewayen för vissa anteckningar och .spec.externalTrafficPolicy inställningen. I vissa fall kan byte .spec.externalTrafficPolicy till hjälpa till Local med felsökning av anslutning och nätverksproblem, eftersom klientkällans IP-adress bevaras för den inkommande begäran vid ingressgatewayen.

Obs!

Om du ändrar .spec.externalTrafficPolicy till Local kan det orsaka obalanserad trafikspridning. Innan du tillämpar den här ändringen rekommenderar vi att du läser Kubernetes-dokumentationen om att bevara klientkällans IP-adress för att förstå kompromisserna mellan de olika externalTrafficPolicy inställningarna.

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 Azures feedbackcommunity.