Delen via


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.

  1. 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 en alb-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

  2. 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:

  1. 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.

  2. 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: