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.
Scenario | 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. | Controleren of Container Apps uw containerinstallatiekopie kan ophalen |
Inrichten duurt te lang | Nadat u een nieuwe revisie hebt geïmplementeerd, heeft de nieuwe revisie de inrichtingsstatus en de status Actief van verwerking voor onbepaalde tijd. | Controleren of statustests correct zijn geconfigureerd |
Revisie is gedegradeerd | Het inrichten van een nieuwe revisie duurt langer dan 10 minuten. Ten slotte heeft het de inrichtingsstatus Ingericht, maar de status Actief van Gedegradeerd. De knopinfo Actieve status leest Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Controleren of statustests correct zijn geconfigureerd |
Aanvragen voor eindpunten mislukken | Het eindpunt van de container-app reageert niet op aanvragen. | De configuratie van inkomend verkeer controleren |
Aanvragen retourneren status 403 | 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 implementeren van installatiekopieën 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. |
Controleren of de Azure Container Apps-extensie preview-functies toestaat |
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 app stdout
en stderr
streams vast. Container Apps genereert systeemlogboeken voor gebeurtenissen op serviceniveau.
- Meld u aan bij het Azure-portaal.
- Voer in de zoekbalk de naam van uw container-app in.
- Selecteer in de sectie Resources de naam van uw container-app.
- Vouw in de navigatiebalk Bewaking uit en selecteer Logboekstroom (niet logboeken).
- 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.
- Stel op de pagina Logboekstream 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.
- Meld u aan bij het Azure-portaal.
- Voer in de zoekbalk de naam van uw container-app in.
- Selecteer in de sectie Resources de naam van uw container-app.
- Selecteer in de navigatiebalk diagnose en los problemen op.
- Selecteer op de pagina Problemen vaststellen en oplossen een van de categorieën Probleemoplossing.
- Selecteer een van de categorieën in de navigatiebalk om manieren te vinden om problemen met uw container-app op te lossen.
Toegankelijkheid van containerinstallatiekopieën 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 functie Container Apps-cloudbuild hebt gebruikt om een containerinstallatiekopieën voor u te genereren (zie het code-naar-cloudpad voor Azure Container Apps, is uw installatiekopieën niet openbaar toegankelijk, dus deze sectie is niet van toepassing.
Voor een Docker-container die als consoletoepassing kan worden uitgevoerd, controleert u of uw installatiekopieën openbaar toegankelijk zijn door de volgende opdracht uit te voeren in een opdrachtprompt met verhoogde bevoegdheid. Voordat u deze opdracht uitvoert, vervangt u tijdelijke aanduidingen tussen <>
uw waarden.
docker run --rm <YOUR_CONTAINER_IMAGE>
Controleer of Docker uw installatiekopieën 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 configuratie van inkomend verkeer 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.
- Meld u aan bij het Azure-portaal.
- Voer in de zoekbalk de naam van uw container-app in.
- Selecteer onder Resources de naam van uw container-app.
- Vouw in de navigatiebalk Instellingen uit en selecteer Inkomend verkeer.
Probleem | Actie |
---|---|
Is inkomend verkeer ingeschakeld? | Controleer of het selectievakje Ingeschakeld is ingeschakeld. |
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 inkomend verkeer in op Beperkt tot Container Apps Environment. |
Gebruikt uw client HTTP of TCP voor toegang tot uw container-app? | Controleer of het type inkomend verkeer 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? | Als de MODUS IP-beveiligingsbeperkingen niet is ingesteld op Al het verkeer toestaan, controleert u of uw client geen IP-adres heeft dat is geweigerd. |
Zie Inkomend verkeer 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.
- 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
. - 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.
- Meld u aan bij het Azure-portaal.
- Voer in de zoekbalk de naam van uw container-app in.
- Selecteer onder Resources de naam van uw container-app.
- Vouw in de navigatiebalk De toepassing uit en selecteer Containers.
- Selecteer statustests op de pagina Containers.
- Vouw liveness-tests, gereedheidstests en opstarttests uit.
- Controleer voor elke test of de poortwaarde juist is.
Werk poortwaarden als volgt bij:
- Selecteer Bewerken en implementeren om een nieuwe revisie te maken.
- Schakel op de pagina Nieuwe revisie maken en implementeren het selectievakje naast de containerinstallatiekopieën in en selecteer Bewerken.
- Selecteer statustests in het venster Een container bewerken.
- Vouw liveness-tests, gereedheidstests en opstarttests uit.
- Bewerk voor elke test de poortwaarde .
- Selecteer de knop Opslaan.
- Selecteer op de pagina Nieuwe revisie maken en implementeren de knop Maken .
Statustests configureren voor een langere opstarttijd
Als inkomend verkeer is ingeschakeld, worden de volgende standaardtests automatisch toegevoegd aan de hoofd-app-container als er geen is gedefinieerd voor elk type.
Hier volgen de standaardwaarden voor elk testtype.
Eigenschappen | Opstarten | Gereedheid | Leeflijkheid |
---|---|---|---|
Protocol | TCP | TCP | TCP |
Poort | Doelpoort voor inkomend verkeer | Doelpoort voor inkomend verkeer | Doelpoort voor inkomend verkeer |
Timeout | 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.
- Meld u aan bij het Azure-portaal.
- Voer in de zoekbalk de naam van uw container-app in.
- Selecteer onder Resources de naam van uw container-app.
- Vouw in de navigatiebalk De toepassing uit en selecteer Containers.
- Selecteer statustests op de pagina Containers.
- Selecteer Bewerken en implementeren om een nieuwe revisie te maken.
- Schakel op de pagina Nieuwe revisie maken en implementeren het selectievakje naast de containerinstallatiekopieën in en selecteer Bewerken.
- Selecteer statustests in het venster Een container bewerken.
- Vouw livenesstests uit.
- Als livenesstests inschakelen is geselecteerd, verhoogt u de waarde voor initiële vertragings seconden.
- Vouw gereedheidstests uit.
- Als gereedheidstests inschakelen is geselecteerd, verhoogt u de waarde voor initiële vertragings seconden.
- Selecteer Opslaan.
- Selecteer op de pagina Nieuwe revisie maken en implementeren de knop Maken .
Vervolgens kunt u de logboeken bekijken om te zien of uw container-app is gestart.
Zie Statustests gebruiken 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.
- Meld u aan bij het Azure-portaal.
- Voer in de zoekbalk de naam van uw container-app in.
- Selecteer onder Resources de naam van uw container-app.
- 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
, controleert u of u geen verkeer doorsturen 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
Controleren of de Azure Container Apps-extensie preview-functies 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 kan worden verwijderd, moet u het bijbehorende VNet handmatig verwijderen.
Identificeer het VNet dat wordt gebruikt door de omgeving die u probeert te verwijderen. Vervang de <TIJDELIJKE AANDUIDINGEN> 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 isvNet::myVNet.id
.Verwijder het VNet handmatig:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Verwijder de Azure Container Apps-omgeving:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes