Dela via


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

  1. Logga in på Azure-portalen.
  2. I sökfältet anger du containerappens namn.
  3. Under Avsnittet Resurser väljer du containerappens namn.
  4. I navigeringsfältet expanderar du Övervakning och väljer Loggström (inte Loggar).
  5. 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.
  6. 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.

  1. Logga in på Azure-portalen.
  2. I sökfältet anger du containerappens namn.
  3. Under Avsnittet Resurser väljer du containerappens namn.
  4. I navigeringsfältet väljer du Diagnostisera och lösa problem.
  5. På sidan Diagnostisera och lösa problem väljer du någon av felsökningskategorierna.
  6. 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.

  1. Logga in på Azure-portalen.
  2. I sökfältet anger du containerappens namn.
  3. Under Resurser väljer du containerappens namn.
  4. 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.

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

  1. Logga in på Azure-portalen.
  2. I sökfältet anger du containerappens namn.
  3. Under Resurser väljer du containerappens namn.
  4. I navigeringsfältet expanderar du Program och väljer Containrar.
  5. På sidan Containrar väljer du Hälsoavsökningar.
  6. Expandera Liveness-avsökningar, Beredskapsavsökningar och Startavsökningar.
  7. Kontrollera att portvärdet är korrekt för varje avsökning.

Uppdatera portvärden på följande sätt:

  1. Välj Redigera och distribuera för att skapa en ny revision.
  2. På sidan Skapa och distribuera ny revision markerar du kryssrutan bredvid containeravbildningen och väljer Redigera.
  3. I fönstret Redigera en container väljer du Hälsoavsökningar.
  4. Expandera Liveness-avsökningar, Beredskapsavsökningar och Startavsökningar.
  5. Redigera portvärdet för varje avsökning.
  6. Klicka på knappen Spara.
  7. 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.

  1. Logga in på Azure-portalen.
  2. I sökfältet anger du containerappens namn.
  3. Under Resurser väljer du containerappens namn.
  4. I navigeringsfältet expanderar du Program och väljer Containrar.
  5. På sidan Containrar väljer du Hälsoavsökningar.
  6. Välj Redigera och distribuera för att skapa en ny revision.
  7. På sidan Skapa och distribuera ny revision markerar du kryssrutan bredvid containeravbildningen och väljer Redigera.
  8. I fönstret Redigera en container väljer du Hälsoavsökningar.
  9. Expandera Liveness-avsökningar.
  10. Om Aktivera liveness-avsökningar har valts ökar du värdet för Inledande fördröjningssekunder.
  11. Expandera Beredskapsavsökningar.
  12. Om Aktivera beredskapsavsökningar har valts ökar du värdet för Inledande fördröjningssekunder.
  13. Välj Spara.
  14. 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.

  1. Logga in på Azure-portalen.
  2. I sökfältet anger du containerappens namn.
  3. Under Resurser väljer du containerappens namn.
  4. I navigeringsfältet expanderar du Program och väljer Revisioner.

Om revisionsläget är inställt på Singledirigeras all trafik till den senaste revisionen som standard. Fliken Aktiva revisioner bör bara visa en revision med värdet Traffic100%.

Om revisionsläget är inställt på kontrollerar du att Multipledu 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.

  1. 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 är vNet::myVNet.id.

  2. Ta bort det virtuella nätverket manuellt:

    az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
    
  3. Ta bort Azure Container Apps-miljön:

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

Nästa steg