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:
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
Kontrollera att portarna är korrekt inställda i gatewayer och virtuella tjänster. För gatewayen ska porten vara inställd på
80
förhttp
eller443
förhttps
. För den virtuella tjänsten ska porten anges till den port som motsvarande tjänst för programmet lyssnar på.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 tillHost
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 specifikationenhosts
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:
Kontrollera att värdena för
INGRESS_HOST_EXTERNAL
miljövariablerna ochSECURE_INGRESS_PORT_EXTERNAL
är giltiga baserat på utdata från följande kommando:kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
Sök efter felmeddelanden i gatewaykontrollantens loggar:
kubectl logs -n aks-istio-ingress <gateway-service-pod>
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.