Felsökning i Application Gateway för containrar
Den här artikeln innehåller vägledning som hjälper dig att felsöka vanliga problem i Application Gateway för containrar.
Hitta versionen av ALB Controller
Innan du börjar felsöka ska du fastställa vilken version av ALB-styrenheten som distribueras. Du kan avgöra vilken version av ALB-styrenheten som körs med hjälp av följande kubectl-kommando (se till att du ersätter ditt namnområde om du inte använder standardnamnområdet azure-alb-system
för ):
kubectl get deployment -n azure-alb-system -o wide
Exempel på utdata>
NAMN | KLAR | À JOUR | TILLGÄNGLIG | ÅLDER | CONTAINRAR | AVBILDNINGAR | SELECTOR |
---|---|---|---|---|---|---|---|
alb-controller | 2/2 | 2 | 2 | 18d | alb-controller | mcr.microsoft.com/application-lb/images/alb-controller:1.3.7 | app=alb-controller |
alb-controller-bootstrap | 1/1 | 1 | 1 | 18d | alb-controller-bootstrap | mcr.microsoft.com/application-lb/images/alb-controller-bootstrap:1.3.7 | app=alb-controller-bootstrap |
I det här exemplet är ALB-kontrollantversionen 1.3.7.
ALB Controller-versionen kan uppgraderas genom att helm upgrade alb-controller
köra kommandot . Mer information finns i Installera ALB-styrenheten.
Dricks
Den senaste ALB Controller-versionen finns i viktig information om ALB-styrenheten.
Samla in ALB-kontrollantloggar
Loggar kan samlas in från ALB-styrenheten med hjälp av kommandot kubectl logs som refererar till ALB Controller-podden.
Hämta ALB-kontrollantens poddnamn som körs
Kör följande kubectl-kommando. Se till att du ersätter ditt namnområde om det inte använder standardnamnområdet
azure-alb-system
för :kubectl get pods -n azure-alb-system
Du bör se utdata som liknar följande exempel. Poddnamn kan skilja sig något.
NAMN KLAR STATUS OMSTARTER ÅLDER alb-controller-6648c5d5c-sdd9t 1/1 Körs 0 4d6h alb-controller-6648c5d5c-au234 1/1 Körs 0 4d6h alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Körs 0 4d6h ALB-styrenheten använder ett val som tillhandahålls av controller-runtime Manager för att fastställa en aktiv och väntelägespodd för hög tillgänglighet.
Kopiera namnet på varje alb-controller-podd (inte bootstrap-podden, i det här fallet:
alb-controller-6648c5d5c-sdd9t
ochalb-controller-6648c5d5c-au234
) och kör följande kommando för att fastställa den aktiva podden.kubectl logs alb-controller-6648c5d5c-sdd9t -n azure-alb-system -c alb-controller | grep "successfully acquired lease"
Du bör se följande om podden är primär:
successfully acquired lease azure-alb-system/alb-controller-leader-election
Samla in loggarna
Loggar från ALB-styrenheten returneras i JSON-format.
Kör följande kubectl-kommando och ersätt namnet med poddnamnet som returnerades i steg 1:
kubectl logs -n azure-alb-system alb-controller-6648c5d5c-sdd9t
På samma sätt kan du omdirigera utdata från det befintliga kommandot till en fil genom att ange tecknet större än (>) och filnamnet som loggarna ska skrivas till:
kubectl logs -n azure-alb-system alb-controller-6648c5d5c-sdd9t > alb-controller-logs.json
Konfigurationsfel
Application Gateway för containrar returnerar statuskod 500
Scenarier där du skulle märka en kod med 500 fel på Application Gateway för containrar är följande:
Ogiltiga serverdelsposter : En serverdel definieras som ogiltig i följande scenarier:
- Den refererar till en okänd eller resurs som inte stöds. I det här fallet har HTTPRoute-statusen ett villkor med orsak inställt på
InvalidKind
och meddelandet förklarar vilken typ av resurs som är okänd eller inte stöds. - Den refererar till en resurs som inte finns. I det här fallet har HTTPRoute-statusen ett villkor med orsak inställt på
BackendNotFound
och meddelandet förklarar att resursen inte finns. - Den refererar till en resurs i ett annat namnområde när referensen inte uttryckligen tillåts av ett ReferenceGrant (eller motsvarande begrepp). I det här fallet har HTTPRoute-statusen ett villkor med orsak inställt på
RefNotPermitted
och meddelandet förklarar vilken korsnamnsrymdsreferens som inte tillåts.
Om en HTTPRoute till exempel har två serverdelar angivna med samma vikt och en är ogiltig måste 50 procent av trafiken ta emot 500.
- Den refererar till en okänd eller resurs som inte stöds. I det här fallet har HTTPRoute-statusen ett villkor med orsak inställt på
Inga slutpunkter hittades för alla serverdelar: när det inte finns några slutpunkter för alla serverdelar som refereras i en HTTPRoute hämtas en 500-felkod.
Anpassad resurs för Programlastbalanserare återspeglar inte statusen Klar
Symtom
Meddelandet Om anpassad resursstatus för ApplicationLoadBalancer står det kontinuerligt att "Application Gateway for Containers-resursen Application Gateway for Containers-name
genomgår en uppdatering".
Följande loggar upprepas av den primära alb-controller-podden.
{"level":"info","version":"x.x.x","Timestamp":"2024-02-26T20:31:53.760150719Z","message":"Stream opened for config updates"}
{"level":"info","version":"x.x.x","operationID":"aaaa0000-bb11-2222-33cc-444444dddddd","Timestamp":"2024-02-26T20:31:53.760313623Z","message":"Successfully sent config update request"}
{"level":"error","version":"x.x.x","error":"rpc error: code = PermissionDenied desc = ALB Controller with object id 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' does not have authorization to perform action on Application Gateway for Containers resource.Please check RBAC delegations to the Application Gateway for Containers resource.","Timestamp":"2024-02-26T20:31:53.769444995Z","message":"Unable to capture config update response"}
{"level":"info","version":"x.x.x","Timestamp":"2024-02-26T20:31:53.769504489Z","message":"Retrying to open config update stream"}
{"level":"info","version":"x.x.x","Timestamp":"2024-02-26T20:31:54.461487406Z","message":"Stream opened up for endpoint updates"}
{"level":"info","version":"x.x.x","operationID":"808825c2-b0a8-476b-b83a-8e7357c55750","Timestamp":"2024-02-26T20:31:54.462070039Z","message":"Successfully sent endpoint update request"}
{"level":"error","version":"x.x.x","error":"rpc error: code = PermissionDenied desc = ALB Controller with object id 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' does not have authorization to perform action on Application Gateway for Containers resource.Please check RBAC delegations to the Application Gateway for Containers resource.","Timestamp":"2024-02-26T20:31:54.470728646Z","message":"Unable to capture endpoint update response"}
{"level":"info","version":"x.x.x","Timestamp":"2024-02-26T20:31:54.47077373Z","message":"Retrying to open up endpoint update stream"}
Kubernetes Gateway-resursen kan inte hämta token från autentiseringskedjan
Symtom
Inga ändringar i HttpRoutes tillämpas på Application Gateway för containrar.
Följande felmeddelande returneras på Kubernetes Gateway-resursen och inga ändringar återspeglas för några HttpRoute-resurser.
status:
conditions:
- lastTransitionTime: "2023-04-28T22:08:34Z"
message: The Gateway is not scheduled
observedGeneration: 2
reason: Scheduled
status: "False"
type: Scheduled
- lastTransitionTime: "2023-04-28T22:08:34Z"
message: "No addresses have been assigned to the Gateway : failed to get token
from credential chain: [FromAssertion(): http call(https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/v2.0/token)(POST)
error: reply status code was 401:\n{\"error\":\"unauthorized_client\",\"error_description\":\"AADSTS70021:
No matching federated identity record found for presented assertion. Assertion
Issuer: 'https://azureregion.oic.prod-aks.azure.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/'.
Assertion Subject: 'system:serviceaccount:azure-application-lb-system:gateway-controller-sa'.
Assertion Audience: 'api://AzureADTokenExchange'. https://docs.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation\\r\\nTrace
ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\r\\nCorrelation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\r\\nTimestamp:
2023-04-28 22:08:46Z\",\"error_codes\":[70021],\"timestamp\":\"2023-04-28 22:08:46Z\",\"trace_id\":\"0000aaaa-11bb-cccc-dd22-eeeeee333333\",\"correlation_id\":\"aaaa0000-bb11-2222-33cc-444444dddddd\",\"error_uri\":\"https://login.microsoftonline.com/error?code=70021\"}
DefaultAzureCredential: failed to acquire a token.\nAttempted credentials:\n\tEnvironmentCredential:
incomplete environment variable configuration. Only AZURE_TENANT_ID and AZURE_CLIENT_ID
are set\n\tManagedIdentityCredential: IMDS token request timed out\n\tAzureCLICredential:
fork/exec /bin/sh: no such file or directory]"
observedGeneration: 2
reason: AddressNotAssigned
status: "False"
type: Ready
Lösning
Se till att de federerade autentiseringsuppgifterna för den hanterade identiteten för ALB Controller-podden för att göra ändringar i Application Gateway för containrar har konfigurerats i Azure. Instruktioner för hur du konfigurerar federerade autentiseringsuppgifter finns i snabbstartsguiderna: