Felsöka en containerapp
Granskning av Azure Container Apps-loggar och konfigurationsinställningar kan avslöja underliggande problem om containerappen inte fungerar korrekt. Använd följande guide för att hitta och visa information om din containerapp.
Scenarier
I följande tabell visas problem som kan uppstå när du använder Azure Container Apps och de åtgärder du kan vidta för att lösa dem.
Scenario | beskrivning | Åtgärder |
---|---|---|
Alla scenarier | Visa loggar Använda Diagnostisera och lösa problem |
|
Fel vid distribution av ny revision | Du får ett felmeddelande när du försöker distribuera en ny revision. | Kontrollera att Container Apps kan hämta containeravbildningen |
Etableringen tar för lång tid | När du har distribuerat en ny revision har den nya revisionen etableringsstatus och statusen Bearbetning körs på obestämd tid. | Kontrollera att hälsoavsökningarna är korrekt konfigurerade |
Revisionen har degraderats | En ny revision tar mer än 10 minuter att etablera. Den har slutligen etableringsstatusen Etablerad, men statusen Körs för Degraderad. Knappbeskrivningsläsningar för körningsstatusDetails: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Kontrollera att hälsoavsökningarna är korrekt konfigurerade |
Begäranden till slutpunkter misslyckas | Slutpunkten för containerappen svarar inte på begäranden. | Granska ingresskonfiguration |
Begäranden returnerar status 403 | Slutpunkten för containerappen svarar på begäranden med HTTP-fel 403 (åtkomst nekad). | Kontrollera att nätverkskonfigurationen är korrekt |
Svar inte som förväntat | Containerappens slutpunkt svarar på begäranden, men svaren är inte som förväntat. | Kontrollera att trafiken dirigeras till rätt revision Kontrollera att du använder unika taggar när du distribuerar avbildningar till containerregistret |
Fel vid saknade parametrar | Du får felmeddelanden om saknade parametrar när du kör az containerapp kommandon i Azure CLI eller kör cmdletar från modulen Az.App i Azure PowerShell. |
Kontrollera att den senaste versionen av Azure Container Apps-tillägget är installerad |
Förhandsgranskningsfunktioner är inte tillgängliga | Förhandsversionsfunktioner är inte tillgängliga när du kör az containerapp kommandon i Azure CLI. |
Kontrollera att Azure Container Apps-tillägget tillåter förhandsversionsfunktioner |
Det går inte att ta bort din app eller miljö | Det här problemet åtföljs ofta av ett meddelande som provisioningState: ScheduledForDelete. | Ta bort det associerade virtuella nätverket manuellt |
Visa loggar
Ett av de första stegen du bör vidta när du letar efter problem med containerappen är att visa loggmeddelanden. Du kan visa utdata från både konsol- och systemloggar. Containerappens konsollogg samlar in appens stdout
och stderr
strömmarna. Container Apps genererar systemloggar för händelser på tjänstnivå.
- Logga in på Azure-portalen.
- I sökfältet anger du containerappens namn.
- Under Avsnittet Resurser väljer du containerappens namn.
- I navigeringsfältet expanderar du Övervakning och väljer Loggström (inte Loggar).
- Om sidan Loggström säger Att den här revisionen skalas till noll. väljer du knappen Gå till revisionshantering. Distribuera en ny revision skalad till ett minsta replikantal på 1. Mer information finns i Skalning i Azure Container Apps.
- På sidan Loggström anger du Loggar till antingen Konsol eller System.
Använd verktyget diagnostisera och lösa problem
Du kan använda verktyget diagnostisera och lösa problem för att hitta problem med containerappens hälsa, konfiguration och prestanda.
- Logga in på Azure-portalen.
- I sökfältet anger du containerappens namn.
- Under Avsnittet Resurser väljer du containerappens namn.
- I navigeringsfältet väljer du Diagnostisera och lösa problem.
- På sidan Diagnostisera och lösa problem väljer du någon av felsökningskategorierna.
- Välj en av kategorierna i navigeringsfältet för att hitta sätt att åtgärda problem med din containerapp.
Kontrollera tillgängligheten för containeravbildning
Om du får ett felmeddelande när du försöker distribuera en ny revision kontrollerar du att Container Apps kan hämta containeravbildningen.
- Kontrollera att brandväggen för containermiljön inte blockerar åtkomsten till containerregistret. Mer information finns i Kontrollera utgående trafik med användardefinierade vägar.
- Om ditt befintliga virtuella nätverk använder en anpassad DNS-server i stället för standard-DNS-servern som tillhandahålls av Azure kontrollerar du att DNS-servern är korrekt konfigurerad och att DNS-sökningen av containerregistret inte misslyckas. Mer information finns i DNS.
- Om du använde cloud build-funktionen för Container Apps för att generera en containeravbildning åt dig (se Kod-till-moln-sökvägen för Azure Container Apps är din avbildning inte offentligt tillgänglig, så det här avsnittet gäller inte.
För en Docker-container som kan köras som ett konsolprogram kontrollerar du att avbildningen är offentligt tillgänglig genom att köra följande kommando i en upphöjd kommandotolk. Innan du kör det här kommandot ersätter du platshållarna som omges av <>
med dina värden.
docker run --rm <YOUR_CONTAINER_IMAGE>
Kontrollera att Docker kör avbildningen utan att rapportera några fel. Om du kör Docker i Windows kontrollerar du att Docker-motorn körs.
Om avbildningen inte är offentligt tillgänglig kan du få följande fel.
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'.
Mer information finns i Nätverk i Azure Container Apps-miljön.
Granska ingresskonfiguration
Containerappens ingressinställningar tillämpas via en uppsättning regler som styr routningen av extern och intern trafik till containerappen. Om du inte kan ansluta till containerappen granskar du de här ingressinställningarna för att se till att dina ingressinställningar inte blockerar begäranden.
- Logga in på Azure-portalen.
- I sökfältet anger du containerappens namn.
- Under Resurser väljer du containerappens namn.
- I navigeringsfältet expanderar du Inställningar och väljer Inkommande.
Problem | Åtgärd |
---|---|
Är inkommande aktiverat? | Kontrollera att kryssrutan Aktiverad är markerad. |
Vill du tillåta extern ingress? | Kontrollera att Inkommande trafik är inställd på Acceptera trafik var som helst. Om din containerapp inte lyssnar efter HTTP-trafik anger du Inkommande trafik till Begränsad till Container Apps Environment. |
Använder klienten HTTP eller TCP för att komma åt containerappen? | Kontrollera att ingresstypen är inställd på rätt protokoll (HTTP eller TCP). |
Har din klient stöd för mTLS? | Kontrollera att klientcertifikatläget är inställt på Kräv endast om klienten stöder mTLS. Mer information finns i konfigurera autentisering av klientcertifikat. |
Använder klienten HTTP/1 eller HTTP/2? | Kontrollera att Transport har angetts till rätt HTTP-version (HTTP/1 eller HTTP/2). |
Är målporten korrekt inställd? | Kontrollera att målporten är inställd på samma port som containerappen lyssnar på, eller samma port som exponeras av containerappens Dockerfile. |
Nekas klientens IP-adress? | Om LÄGET FÖR IP-säkerhetsbegränsningar inte är inställt på Tillåt all trafik kontrollerar du att klienten inte har någon IP-adress som nekas. |
Mer information finns i Ingress i Azure Container Apps.
Verifiera nätverkskonfigurationen
Rekursiva Matchare i Azure använder IP-adressen 168.63.129.16
för att lösa begäranden.
- Om ditt virtuella nätverk använder en anpassad DNS-server i stället för standard-DNS-servern som tillhandahålls av Azure konfigurerar du DNS-servern för att vidarebefordra olösta DNS-frågor till
168.63.129.16
. - När du konfigurerar din NSG eller brandvägg ska du inte blockera
168.63.129.16
adressen.
Mer information finns i Nätverk i Azure Container Apps-miljön.
Verifiera konfigurationen av hälsoavsökningar
För alla typer av hälsoavsökningar (liveness, beredskap och start) som använder TCP som transport kontrollerar du att portnumren matchar den inkommande målport som du har konfigurerat för containerappen.
- Logga in på Azure-portalen.
- I sökfältet anger du containerappens namn.
- Under Resurser väljer du containerappens namn.
- I navigeringsfältet expanderar du Program och väljer Containrar.
- På sidan Containrar väljer du Hälsoavsökningar.
- Expandera Liveness-avsökningar, Beredskapsavsökningar och Startavsökningar.
- Kontrollera att portvärdet är korrekt för varje avsökning.
Uppdatera portvärden på följande sätt:
- Välj Redigera och distribuera för att skapa en ny revision.
- På sidan Skapa och distribuera ny revision markerar du kryssrutan bredvid containeravbildningen och väljer Redigera.
- I fönstret Redigera en container väljer du Hälsoavsökningar.
- Expandera Liveness-avsökningar, Beredskapsavsökningar och Startavsökningar.
- Redigera portvärdet för varje avsökning.
- Klicka på knappen Spara.
- På sidan Skapa och distribuera ny revision väljer du knappen Skapa .
Konfigurera hälsoavsökningar för längre starttid
Om ingress är aktiverat läggs följande standardavsökningar automatiskt till i huvudappcontainern om ingen definieras för varje typ.
Här är standardvärdena för varje avsökningstyp.
Property | Start | Beredskap | Livskraft |
---|---|---|---|
Protokoll | TCP | TCP | TCP |
Port | Port för inkommande mål | Port för inkommande mål | Port för inkommande mål |
Timeout | 3 sekunder | 5 sekunder | saknas |
Period | 1 sekund | 5 sekunder | saknas |
Inledande fördröjning | 1 sekund | 3 sekunder | saknas |
Tröskelvärde för lyckad åtgärd | 1 | 1 | saknas |
Tröskelvärde för fel | 240 | 48 | saknas |
Om containerappen tar längre tid att starta (vilket är vanligt i Java) kan du behöva anpassa egenskapen för liveness- och beredskapsavsökningen Initiala fördröjningssekunder i enlighet med detta. Du kan visa loggarna för att se den typiska starttiden för din containerapp.
- Logga in på Azure-portalen.
- I sökfältet anger du containerappens namn.
- Under Resurser väljer du containerappens namn.
- I navigeringsfältet expanderar du Program och väljer Containrar.
- På sidan Containrar väljer du Hälsoavsökningar.
- Välj Redigera och distribuera för att skapa en ny revision.
- På sidan Skapa och distribuera ny revision markerar du kryssrutan bredvid containeravbildningen och väljer Redigera.
- I fönstret Redigera en container väljer du Hälsoavsökningar.
- Expandera Liveness-avsökningar.
- Om Aktivera liveness-avsökningar har valts ökar du värdet för Inledande fördröjningssekunder.
- Expandera Beredskapsavsökningar.
- Om Aktivera beredskapsavsökningar har valts ökar du värdet för Inledande fördröjningssekunder.
- Välj Spara.
- På sidan Skapa och distribuera ny revision väljer du knappen Skapa .
Du kan sedan visa loggarna för att se om containerappen startar.
Mer information finns i Använda hälsoavsökningar.
Kontrollera att trafiken dirigeras till rätt revision
Om containerappen inte fungerar som förväntat kan problemet bero på att begäranden dirigeras till en inaktuell revision.
- Logga in på Azure-portalen.
- I sökfältet anger du containerappens namn.
- Under Resurser väljer du containerappens namn.
- I navigeringsfältet expanderar du Program och väljer Revisioner.
Om revisionsläget är inställt på Single
dirigeras all trafik till den senaste revisionen som standard. Fliken Aktiva revisioner bör bara visa en revision med värdet Traffic på 100%
.
Om revisionsläget är inställt på kontrollerar du att Multiple
du inte dirigerar trafik till inaktuella revisioner.
Mer information om hur du konfigurerar trafikdelning finns i Trafikdelning i Azure Container Apps.
Kontrollera att den senaste versionen av Azure Container Apps-tillägget är installerad
Om du får fel om saknade parametrar när du kör az containerapp
kommandon i Azure CLI eller cmdletar från modulen Az.App
i Azure PowerShell kontrollerar du att den senaste versionen av Azure Container Apps-tillägget är installerad.
az extension add --name containerapp --upgrade
Kontrollera att Azure Container Apps-tillägget tillåter förhandsversionsfunktioner
Om förhandsversionsfunktioner inte är tillgängliga när du kör az containerapp
kommandon i Azure CLI aktiverar du förhandsgranskningsfunktioner i Azure Container Apps-tillägget.
az extension add --name containerapp --upgrade --allow-preview true
Ta bort det virtuella nätverk som används av Azure Container Apps-miljön manuellt
Om du får meddelandet provisioningState: ScheduledForDelete, men din miljö inte kan tas bort, måste du ta bort det associerade virtuella nätverket manuellt.
Identifiera det virtuella nätverk som används av den miljö som du försöker ta bort. <Ersätt PLACEHOLDERS> med dina värden.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
I utdata letar du upp
infrastructureSubnetId
och noterar VNet-ID:t. Ett exempel på ett VNet-ID ärvNet::myVNet.id
.Ta bort det virtuella nätverket manuellt:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Ta bort Azure Container Apps-miljön:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes