Problemen met een container-app oplossen

Als u logboeken en configuratie-instellingen van Azure Container Apps bekijkt, kunnen onderliggende problemen worden weergegeven als uw container-app zich niet correct gedraagt. Gebruik de volgende handleiding om u te helpen details over uw container-app te vinden en weer te geven.

Scenario's

De volgende tabel bevat problemen die kunnen optreden tijdens het gebruik van Azure Container Apps en de acties die u kunt ondernemen om deze op te lossen.

Scenariobeschrijving Beschrijving Acties
Alle scenario's Logboeken weergeven

Problemen vaststellen en oplossen
Fout bij het implementeren van nieuwe revisie Er wordt een foutbericht weergegeven wanneer u een nieuwe revisie probeert te implementeren. Controleer of Container Apps uw containerimage kan ophalen
Inrichten duurt te lang Nadat u een nieuwe revisie hebt geïmplementeerd, heeft de nieuwe revisie een inrichtingsstatus van Inrichting en een uitvoeringsstatus van Verwerken voor onbepaalde tijd. Zorg ervoor dat gezondheidscontroles correct zijn geconfigureerd
Revisie is gedegradeerd Het inrichten van een nieuwe revisie duurt langer dan 10 minuten. Ten slotte heeft het een inrichtingsstatus van Ingericht, maar een status van Gedegradeerd. De knopinfo Actieve status leest Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. Zorg ervoor dat gezondheidscontroles correct zijn geconfigureerd
Aanvragen voor eindpunten mislukken Het eindpunt van de container-app reageert niet op aanvragen. De ingress-configuratie controleren
Aanvragen geven de status 403 terug Het eindpunt van de container-app reageert op aanvragen met HTTP-fout 403 (toegang geweigerd). Controleren of de netwerkconfiguratie juist is
Antwoorden niet zoals verwacht Het eindpunt van de container-app reageert op aanvragen, maar de antwoorden zijn niet zoals verwacht. Controleren of verkeer wordt gerouteerd naar de juiste revisie

Controleer of u unieke tags gebruikt bij het deployen van images in het containerregister
Fout met ontbrekende parameters U ontvangt foutberichten over ontbrekende parameters wanneer u opdrachten uitvoert az containerapp in de Azure CLI of cmdlets uitvoert vanuit de Az.App module in Azure PowerShell. Controleren of de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd
Preview-functies zijn niet beschikbaar Preview-functies zijn niet beschikbaar wanneer u opdrachten uitvoert az containerapp in de Azure CLI. Verifieer of de extensie voor Azure Container Apps previewfuncties toestaat
Fout bij synchronisatie van geheim in Key Vault U kunt geen geheimen ophalen of synchroniseren vanuit Azure Key Vault. Problemen met Key Vault-verwijzingen oplossen
Het verwijderen van uw app of omgeving werkt niet Dit probleem wordt vaak vergezeld van een bericht zoals provisioningState: ScheduledForDelete. Het gekoppelde VNet handmatig verwijderen

Logboeken weergeven

Een van de eerste stappen die u moet uitvoeren tijdens het zoeken naar problemen met uw container-app, is het weergeven van logboekberichten. U kunt de uitvoer van zowel console- als systeemlogboeken bekijken. Het consolelogboek van uw container-app legt de stdout- en stderr-streams van de app vast. Container Apps genereert systeemlogboeken voor gebeurtenissen op serviceniveau.

  1. Meld u aan bij het Azure-portaal.
  2. Voer in de zoekbalk de naam van uw container-app in.
  3. Selecteer in de sectie Resources de naam van uw container-app.
  4. Vouw in de navigatiebalk Monitoring uit en selecteer Log stream (niet Logs).
  5. Als op de pagina Logboekstream wordt opgegeven dat deze revisie naar nul wordt geschaald, selecteert u de knop Ga naar Revisiebeheer . Implementeer een nieuwe revisie die is geschaald naar een minimumaantal replica's van 1. Zie Schalen in Azure Container Apps voor meer informatie.
  6. Stel op de pagina Logboekstream de logboeken in op Console of Systeem.

Het hulpprogramma voor het vaststellen en oplossen van problemen gebruiken

U kunt het hulpprogramma voor problemen vaststellen en oplossen gebruiken om problemen te vinden met de status, configuratie en prestaties van uw container-app.

  1. Meld u aan bij het Azure-portaal.
  2. Voer in de zoekbalk de naam van uw container-app in.
  3. Selecteer in de sectie Resources de naam van uw container-app.
  4. Selecteer in de navigatiebalk Diagnose en los problemen op.
  5. Selecteer op de pagina Problemen vaststellen en oplossen een van de categorieën Probleemoplossing.
  6. Selecteer een van de categorieën in de navigatiebalk om manieren te vinden om problemen met uw container-app op te lossen.

Toegankelijkheid van containerafbeelding controleren

Als u een foutbericht ontvangt wanneer u een nieuwe revisie probeert te implementeren, controleert u of Container Apps uw containerinstallatiekopie kan ophalen.

  • Zorg ervoor dat de firewall van uw containeromgeving de toegang tot het containerregister niet blokkeert. Zie Uitgaand verkeer beheren met door de gebruiker gedefinieerde routes voor meer informatie.
  • Als uw bestaande VNet gebruikmaakt van een aangepaste DNS-server in plaats van de standaard door Azure geleverde DNS-server, controleert u of uw DNS-server juist is geconfigureerd en of de DNS-zoekopdracht van het containerregister niet mislukt. Zie DNS voor meer informatie.
  • Als u de Container Apps-cloudbuildfunctie hebt gebruikt om een containerafbeelding voor u te genereren (zie Code-naar-cloudpad voor Azure Container Apps), is uw afbeelding niet openbaar toegankelijk, dus deze sectie is niet van toepassing.

Voor een Docker-container die als consoletoepassing kan worden uitgevoerd, controleer of uw afbeelding openbaar toegankelijk is door de volgende opdracht uit te voeren in een opdrachtprompt met verhoogde rechten. Voordat u deze opdracht uitvoert, vervangt u tijdelijke aanduidingen omgeven door <> met uw waarden.

docker run --rm <YOUR_CONTAINER_IMAGE>

Controleer of Docker uw image uitvoert zonder fouten te melden. Als u Docker uitvoert in Windows, controleert u of de Docker Engine wordt uitgevoerd.

Als uw afbeelding niet openbaar toegankelijk is, wordt mogelijk de volgende fout weergegeven.

docker: Error response from daemon: pull access denied for <YOUR_CONTAINER_IMAGE>, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.

Zie Netwerken in de Azure Container Apps-omgeving voor meer informatie.

De ingressconfiguratie controleren

De instellingen voor inkomend verkeer van uw container-app worden afgedwongen via een set regels waarmee de routering van extern en intern verkeer naar uw container-app wordt beheerd. Als u geen verbinding kunt maken met uw container-app, controleert u deze instellingen voor inkomend verkeer om ervoor te zorgen dat de instellingen voor inkomend verkeer geen aanvragen blokkeren.

  1. Meld u aan bij het Azure-portaal.
  2. Voer in de zoekbalk de naam van uw container-app in.
  3. Selecteer onder Resources de naam van uw container-app.
  4. In de navigatiebalk, vouw Instellingen uit en selecteer Ingress.
Probleem Actie
Is ingress ingeschakeld? Controleer of het selectievakje Ingeschakeld is aangevinkt.
Wilt u extern inkomend verkeer toestaan? Controleer of inkomend verkeer is ingesteld op Verkeer vanaf elke locatie accepteren. Als uw container-app niet naar HTTP-verkeer luistert, stelt u Ingress Traffic in op Beperkt tot Container Apps-omgeving.
Gebruikt uw client HTTP of TCP voor toegang tot uw container-app? Controleer of Ingress-type is ingesteld op het juiste protocol (HTTP of TCP).
Ondersteunt uw client mTLS? Controleer of de clientcertificaatmodus is ingesteld op Alleen vereisen als uw client mTLS ondersteunt. Zie Verificatie van clientcertificaten configureren voor meer informatie.
Gebruikt uw client HTTP/1 of HTTP/2? Controleer of Transport is ingesteld op de juiste HTTP-versie (HTTP/1 of HTTP/2).
Is de doelpoort juist ingesteld? Controleer of de doelpoort is ingesteld op dezelfde poort waarop uw container-app luistert, of dezelfde poort die wordt weergegeven door de Dockerfile van uw container-app.
Is het IP-adres van uw client geweigerd? Indien de modus IP-beveiligingsbeperkingen niet is ingesteld op Al het verkeer toestaan, controleer dan of uw client geen geweigerd IP-adres heeft.

Zie Ingress in Azure Container Apps voor meer informatie.

Netwerkconfiguratie controleren

Recursieve azure-resolvers gebruiken het IP-adres 168.63.129.16 om aanvragen op te lossen.

  1. Als uw VNet gebruikmaakt van een aangepaste DNS-server in plaats van de standaard door Azure geleverde DNS-server, configureert u uw DNS-server om niet-opgeloste DNS-query's door te sturen naar 168.63.129.16.
  2. Wanneer u uw NSG of firewall configureert, blokkeert u het 168.63.129.16 adres niet.

Zie Netwerken in de Azure Container Apps-omgeving voor meer informatie.

Configuratie van statustests controleren

Controleer voor alle typen statustests (liveness, gereedheid en opstarten) die TCP gebruiken als transport, of de poortnummers overeenkomen met de doelpoort voor inkomend verkeer die u hebt geconfigureerd voor uw container-app.

  1. Meld u aan bij het Azure-portaal.
  2. Voer in de zoekbalk de naam van uw container-app in.
  3. Selecteer onder Resources de naam van uw container-app.
  4. Vouw in de navigatiebalk Applicatie uit en selecteer Containers.
  5. Selecteer gezondheidsonderzoeken op de pagina Containers.
  6. Vouw liveness-tests, gereedheidstests en opstarttests uit.
  7. Controleer voor elke test of de poortwaarde juist is.

Werk poortwaarden als volgt bij:

  1. Selecteer Bewerken en implementeren om een nieuwe revisie te maken.
  2. Op de Creëer en implementeer nieuwe revisie pagina, selecteer het selectievakje naast je containerimage en kies Bewerken.
  3. In het venster Een container bewerken selecteer gezondheidsonderzoeken.
  4. Vouw liveness-tests, gereedheidstests en opstarttests uit.
  5. Bewerk voor elke probe de Poort waarde.
  6. Selecteer de knop Opslaan.
  7. Op de pagina Nieuwe revisie maken en implementeren, selecteer de knop Maken.

Statustests configureren voor een langere opstarttijd

Als ingress is ingeschakeld, worden de volgende standaardprobes automatisch toegevoegd aan de hoofdcontainer van de app als er voor elk type geen is gedefinieerd.

Hier volgen de standaardwaarden voor elk testtype.

Eigenschap Opstarten Gereedheid Leeflijkheid
protocol TCP TCP TCP
Poort Doelpoort voor inkomend verkeer Doelpoort voor inkomend verkeer Doelpoort voor inkomend verkeer
Onderbreking 3 seconden 5 seconden n.v.t.
Periode 1 seconde 5 seconden n.v.t.
Initiële vertraging 1 seconde 3 seconden n.v.t.
Drempelwaarde voor succes 1 1 n.v.t.
Drempelwaarde voor fout 240 48 n.v.t.

Als het langer duurt voordat uw container-app wordt gestart (wat gebruikelijk is in Java), moet u mogelijk de eigenschap Liveness and Readiness probe Initial delay seconds dienovereenkomstig aanpassen. U kunt de logboeken bekijken om de gebruikelijke opstarttijd voor uw container-app te bekijken.

  1. Meld u aan bij het Azure-portaal.
  2. Voer in de zoekbalk de naam van uw container-app in.
  3. Selecteer onder Resources de naam van uw container-app.
  4. Vouw in de navigatiebalk Applicatie uit en selecteer Containers.
  5. Selecteer gezondheidsonderzoeken op de pagina Containers.
  6. Selecteer Bewerken en implementeren om een nieuwe revisie te maken.
  7. Op de Creëer en implementeer nieuwe revisie pagina, selecteer het selectievakje naast je containerimage en kies Bewerken.
  8. In het venster Een container bewerken selecteer gezondheidsonderzoeken.
  9. Vouw Liveness probes uit.
  10. Als livenesstests inschakelen is geselecteerd, verhoogt u de waarde voor initiële vertragings seconden.
  11. Vouw gereedheidstests uit.
  12. Als gereedheidstests inschakelen is geselecteerd, verhoogt u de waarde voor initiële vertragings seconden.
  13. Selecteer Opslaan.
  14. Op de pagina Nieuwe revisie maken en implementeren, selecteer de knop Maken.

Vervolgens kunt u de logboeken bekijken om te zien of uw container-app is gestart.

Zie Gebruik Gezondheidstoetsen voor meer informatie.

Controleren of verkeer wordt gerouteerd naar de juiste revisie

Als uw container-app niet werkt zoals verwacht, kan het probleem zijn dat aanvragen worden doorgestuurd naar een verouderde revisie.

  1. Meld u aan bij het Azure-portaal.
  2. Voer in de zoekbalk de naam van uw container-app in.
  3. Selecteer onder Resources de naam van uw container-app.
  4. Vouw toepassing uit in de navigatiebalk en selecteer Revisies.

Als de revisiemodus is ingesteld op Single, wordt al het verkeer standaard doorgestuurd naar uw meest recente revisie. Op het tabblad Actieve revisies moet slechts één revisie worden weergegeven, met een verkeerswaarde van 100%.

Als revisiemodus is ingesteld op Multiple, zorg ervoor dat u geen verkeer routeert naar verouderde revisies.

Zie Verkeer splitsen in Azure Container Apps voor meer informatie over het configureren van verkeer splitsen.

Controleren of de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd

Als u fouten ontvangt over ontbrekende parameters wanneer u opdrachten uitvoert az containerapp in Azure CLI of cmdlets vanuit de Az.App module in Azure PowerShell, moet u ervoor zorgen dat de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd.

az extension add --name containerapp --upgrade

Verifiëren of de extensie voor Azure Container Apps previews toestaat

Als preview-functies niet beschikbaar zijn wanneer u opdrachten uitvoert az containerapp in de Azure CLI, schakelt u preview-functies in op de Azure Container Apps-extensie.

az extension add --name containerapp --upgrade --allow-preview true

Het VNet dat wordt gebruikt door de Azure Container Apps-omgeving handmatig verwijderen

Als u het bericht provisioningState ontvangt: ScheduledForDelete, maar uw omgeving niet daadwerkelijk wordt verwijderd, moet u het bijbehorende VNet handmatig verwijderen.

  1. Identificeer het VNet dat wordt gebruikt door de omgeving die u probeert te verwijderen. Vervang de <PLACEHOLDERS> door uw waarden.

    az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
    

    Zoek infrastructureSubnetId en noteer de VNet-id in de uitvoer. Een voorbeeld van een VNet-id is vNet::myVNet.id.

  2. Verwijder het VNet handmatig:

    az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
    
  3. Verwijder de Azure Container Apps-omgeving:

    az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes
    

Volgende stappen