Problemen oplossen in Application Gateway voor containers
Dit artikel bevat enkele richtlijnen voor het oplossen van veelvoorkomende problemen in Application Gateway for Containers.
De versie van DE ALB-controller zoeken
Voordat u begint met het oplossen van problemen, bepaalt u de versie van DE ALB-controller die is geïmplementeerd. U kunt bepalen welke versie van DE ALB-controller wordt uitgevoerd met behulp van de volgende kubectl-opdracht (zorg ervoor dat u uw naamruimte vervangt als u de standaardnaamruimte van azure-alb-system
):
kubectl get deployment -n azure-alb-system -o wide
Voorbeelduitvoer:
NAAM | GEREED | ACTUEEL | BESCHIKBAAR | LEEFTIJD | CONTAINERS | INSTALLATIEKOPIEËN | 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 |
In dit voorbeeld is de VERSIE van de ALB-controller 1.3.7.
De versie van de ALB-controller kan worden bijgewerkt door de opdracht uit te helm upgrade alb-controller
voeren. Zie De ALB-controller installeren voor meer informatie.
Tip
De nieuwste VERSIE van DE ALB Controller vindt u in de releaseopmerkingen van de ALB Controller.
LOGBOEKen van DE ALB-controller verzamelen
Logboeken kunnen worden verzameld van de ALB-controller met behulp van de kubectl logs-opdracht die verwijst naar de ALB Controller pod.
De naam van de actieve ALB Controller-pod ophalen
Voer de volgende kubectl-opdracht uit. Zorg ervoor dat u uw naamruimte vervangt als u de standaardnaamruimte van
azure-alb-system
:kubectl get pods -n azure-alb-system
De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld. Podnamen kunnen enigszins verschillen.
NAAM GEREED STATUS HERSTARTEN LEEFTIJD alb-controller-6648c5d5c-sdd9t 1/1 Wordt uitgevoerd 0 4d6h alb-controller-6648c5d5c-au234 1/1 Wordt uitgevoerd 0 4d6h alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Wordt uitgevoerd 0 4d6h De ALB-controller maakt gebruik van een verkiezing van controller-runtime manager om een actieve en stand-by pod te bepalen voor hoge beschikbaarheid.
Kopieer de naam van elke alb-controller pod (niet de bootstrap pod, in dit geval:
alb-controller-6648c5d5c-sdd9t
enalb-controller-6648c5d5c-au234
) en voer de volgende opdracht uit om de actieve pod te bepalen.kubectl logs alb-controller-6648c5d5c-sdd9t -n azure-alb-system -c alb-controller | grep "successfully acquired lease"
U ziet het volgende als de pod primair is:
successfully acquired lease azure-alb-system/alb-controller-leader-election
De logboeken verzamelen
Logboeken van DE ALB-controller worden geretourneerd in JSON-indeling.
Voer de volgende kubectl-opdracht uit, waarbij u de naam vervangt door de podnaam die in stap 1 is geretourneerd:
kubectl logs -n azure-alb-system alb-controller-6648c5d5c-sdd9t
Op dezelfde manier kunt u de uitvoer van de bestaande opdracht omleiden naar een bestand door het teken groter dan (>) en de bestandsnaam op te geven waarnaar de logboeken moeten worden geschreven:
kubectl logs -n azure-alb-system alb-controller-6648c5d5c-sdd9t > alb-controller-logs.json
Configuratiefouten
Application Gateway for Containers retourneert 500 statuscode
Scenario's waarin u een foutcode van 500 ziet in Application Gateway for Containers:
Ongeldige back-endvermeldingen : een back-end is gedefinieerd als ongeldig in de volgende scenario's:
- Het verwijst naar een onbekend of niet-ondersteund type resource. In dit geval heeft de status van de HTTPRoute een voorwaarde met de reden ingesteld
InvalidKind
op en in het bericht wordt uitgelegd welk type resource onbekend of niet wordt ondersteund. - Deze verwijst naar een resource die niet bestaat. In dit geval heeft de status van de HTTPRoute een voorwaarde waaraan de reden is ingesteld
BackendNotFound
en in het bericht wordt uitgelegd dat de resource niet bestaat. - Het verwijst naar een resource in een andere naamruimte wanneer de verwijzing niet expliciet is toegestaan door een ReferenceGrant (of een equivalent concept). In dit geval heeft de status van de HTTPRoute een voorwaarde waaraan de reden is ingesteld
RefNotPermitted
en in het bericht wordt uitgelegd welke verwijzing naar meerdere naamruimten niet is toegestaan.
Als een HTTPRoute bijvoorbeeld twee back-ends heeft die gelijk zijn aan gewichten en één ongeldig is, moet 50 procent van het verkeer een 500 ontvangen.
- Het verwijst naar een onbekend of niet-ondersteund type resource. In dit geval heeft de status van de HTTPRoute een voorwaarde met de reden ingesteld
Er zijn geen eindpunten gevonden voor alle back-ends: wanneer er geen eindpunten zijn gevonden voor alle back-ends waarnaar wordt verwezen in een HTTPRoute, wordt er een 500-foutcode verkregen.
Aangepaste resource van application Load Balancer geeft niet de status Gereed weer
Symptomen
In applicationLoadBalancer wordt voortdurend het bericht 'Application Gateway for Containers-resource Application Gateway for Containers-name
wordt bijgewerkt'.
De volgende logboeken worden herhaald door de primaire alb-controller pod.
{"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-resource kan geen token ophalen uit referentieketen
Symptomen
Er worden geen wijzigingen in HttpRoutes toegepast op Application Gateway for Containers.
Het volgende foutbericht wordt geretourneerd in de Kubernetes Gateway-resource en er worden geen wijzigingen doorgevoerd voor httpRoute-resources.
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
Oplossing
Zorg ervoor dat de federatieve referenties van de beheerde identiteit voor de ALB Controller-pod wijzigingen aanbrengen in Application Gateway for Containers zijn geconfigureerd in Azure. Instructies voor het configureren van federatieve referenties vindt u in de snelstartgidsen: