Freigeben über


Behandeln von Problemen mit einer Container-App

Wenn Ihre Container-App nicht ordnungsgemäß funktioniert, kann ein Blick in die Protokolle und Konfigurationseinstellungen von Azure Container Apps zugrunde liegende Probleme offenbaren. Im folgenden Leitfaden erfahren Sie, wie Sie Details zu Ihrer Container-App finden und anzeigen.

Szenarien

Die folgende Tabelle enthält Probleme, die bei der Verwendung von Azure Container Apps auftreten können, sowie die Aktionen, die Sie ausführen können, um sie zu beheben.

Szenario Beschreibung Aktionen
Alle Szenarien Anzeigen von Protokollen

Beheben von Problemen mithilfe der Diagnose
Fehler beim Bereitstellen einer neuen Revision Beim Versuch, eine neue Revision bereitzustellen, wird eine Fehlermeldung angezeigt. Vergewissern, dass Container Apps Ihr Containerimage pullen kann
Bereitstellung dauert zu lange Nachdem Sie eine neue Revision bereitgestellt haben, hat diese dauerhaft einen Bereitstellungsstatus mit dem Wert Wird bereitgestellt und einen Ausführungsstatus mit dem Wert Verarbeitung läuft. Vergewissern, dass Integritätstests korrekt konfiguriert sind
Revision beeinträchtigt Die Bereitstellung einer neuen Revision dauert länger als zehn Minuten. Letztendlich hat sie einen Bereitstellungsstatus mit dem Wert Bereitgestellt, aber einen Ausführungsstatus mit dem Wert Beeinträchtigt. In der QuickInfo für den Ausführungsstatus ist Folgendes angegeben: Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. Vergewissern, dass Integritätstests korrekt konfiguriert sind
Nicht erfolgreiche Anforderungen für Endpunkte Der Container-App-Endpunkt antwortet nicht auf Anforderungen. Überprüfen der Konfiguration für eingehenden Datenverkehr
Rückgabe des Status 403 bei Anforderungen Der Endpunkt der Container-App antwortet auf Anforderungen mit dem HTTP-Fehler 403 (Zugriff verweigert). Vergewissern, dass die Netzwerkkonfiguration korrekt ist
Unerwartete Antworten Der Endpunkt der Container-App antwortet zwar auf Anforderungen, die Antworten sind jedoch nicht wie erwartet. Vergewissern, dass Datenverkehr an die richtige Revision weitergeleitet wird

Vergewissern, dass beim Bereitstellen von Images für die Containerregistrierung eindeutige Tags verwendet werden
Fehler aufgrund fehlender Parameter Sie erhalten Fehlermeldungen zu fehlenden Parametern, wenn Sie az containerapp-Befehle in der Azure CLI oder Cmdlets aus dem Az.App-Modul in Azure PowerShell ausführen. Überprüfen, ob die aktuelle Version der Azure Container Apps-Erweiterung installiert ist
Keine Previewfunktionen verfügbar Previewfunktionen sind nicht verfügbar, wenn Sie az containerapp-Befehle in der Azure CLI ausführen. Überprüfen, ob die Azure Container Apps-Erweiterung Vorschaufeatures zulässt
Das Löschen Ihrer App oder Umgebung funktioniert nicht Dieses Problem wird häufig von einer Meldung wie provisioningState: ScheduledForDelete begleitet. Manuelles Löschen des zugeordneten VNet

Anzeigen von Protokollen

Einer der ersten Schritte bei der Suche nach Problemen mit Ihrer Container-App ist die Betrachtung von Protokollmeldungen. Sie können sowohl die Ausgabe von Konsolenprotokollen als auch die Ausgabe von Systemprotokollen anzeigen. Im Konsolenprotokoll Ihrer Container-App werden die Streams stdout und stderr der App erfasst. Container Apps generiert Systemprotokolle für Ereignisse auf Dienstebene.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
  3. Wählen Sie im Abschnitt Ressourcen den Namen Ihrer Container-App aus.
  4. Erweitern Sie auf der Navigationsleiste die Option Überwachung, und wählen Sie Protokollstream (nicht Protokolle) aus.
  5. Wenn auf der Seite Protokollstream die Meldung Diese Revision ist auf Null skaliert. angezeigt wird, wählen Sie die Schaltfläche Zur Revisionsverwaltung wechseln aus. Stellen Sie eine neue Revision bereit, die auf mindestens ein Replikat skaliert ist. Weitere Informationen finden Sie unter Festlegen von Skalierungsregeln in Azure Container Apps.
  6. Legen Sie auf der Seite Protokollstream die Option Protokolle auf Konsole oder System fest.

Verwenden des Tools für die Diagnose und Problembehandlung

Sie können das Tool Diagnose und Problembehandlung verwenden, um Probleme mit der Integrität, Konfiguration und Leistung Ihrer Container-App zu finden.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
  3. Wählen Sie im Abschnitt Ressourcen den Namen Ihrer Container-App aus.
  4. Wählen auf der Navigationsleiste die Option Diagnose und Problembehandlung aus.
  5. Wählen Sie auf der Seite Diagnose und Problembehandlung eine der Problembehandlungskategorien aus.
  6. Wählen Sie über die Navigationsleiste eine der Kategorien aus, um zu erfahren, wie Sie Probleme mit Ihrer Container-App beheben können.

Überprüfen des Zugriffs auf das Containerimage

Wenn beim Versuch, eine neue Revision bereitzustellen, eine Fehlermeldung angezeigt wird, vergewissern Sie sich, dass Container Apps Ihr Containerimage pullen kann.

  • Stellen Sie sicher, dass der Zugriff auf die Containerregistrierung nicht durch Ihre Containerumgebungsfirewall blockiert wird. Weitere Informationen finden Sie unter Steuern des ausgehenden Datenverkehrs mit benutzerdefinierten Routen.
  • Falls Ihr vorhandenes VNet anstelle des von Azure bereitgestellten DNS-Standardservers einen benutzerdefinierten DNS-Server verwendet, vergewissern Sie sich, dass Ihr DNS-Server ordnungsgemäß konfiguriert und die DNS-Suche der Containerregistrierung erfolgreich ist. Weitere Informationen finden Sie unter DNS.
  • Wenn Sie für die Generierung eines Containerimage das Cloudbuild-Feature von Container Apps verwendet haben (siehe Neu bei Containern), ist Ihr Image nicht öffentlich zugänglich und dieser Abschnitt nicht relevant.

Vergewissern Sie sich bei einem Docker-Container, der als Konsolenanwendung ausgeführt werden kann, dass Ihr Image öffentlich zugänglich ist, indem Sie den folgenden Befehl an einer Eingabeaufforderung mit erhöhten Rechten ausführen. Ersetzen Sie von <> umgebene Platzhalter mit Ihren Werten, bevor Sie den Befehl ausführen.

docker run --rm <YOUR_CONTAINER_IMAGE>

Vergewissern Sie sich, dass Docker Ihr Image ohne Fehlermeldungen ausführt. Stellen Sie bei Verwendung von Docker unter Windows sicher, dass das Docker-Modul ausgeführt wird.

Ist Ihr Image nicht öffentlich zugänglich, tritt ggf. folgender Fehler auf:

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

Weitere Informationen finden Sie unter Netzwerk in der Azure Container Apps-Umgebung.

Überprüfen der Konfiguration für eingehenden Datenverkehr

Die Einstellungen für eingehenden Datenverkehr Ihrer Container-App werden über eine Reihe von Regeln erzwungen, die das Routing von externem und internem Datenverkehr an Ihre Container-App steuern. Wenn Sie keine Verbindung mit Ihrer Container-App herstellen können, überprüfen Sie diese Einstellungen für eingehenden Datenverkehr, um sicherzustellen, dass Anforderungen nicht durch Ihre Eingangseinstellungen blockiert werden.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
  3. Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
  4. Erweitern Sie auf der Navigationsleiste die Option Einstellungen, und wählen Sie Eingang aus.
Abgang Aktion
Ist eingehender Datenverkehr aktiviert? Vergewissern Sie sich, dass das Kontrollkästchen Aktiviert aktiviert ist.
Möchten Sie externen eingehenden Datenverkehr zulassen? Vergewissern Sie sich, dass Eingehender Datenverkehr auf Datenverkehr von überall aus akzeptieren festgelegt ist. Wenn Ihre Container-App nicht auf HTTP-Datenverkehr lauscht, legen Sie Eingehender Datenverkehr auf Auf Container Apps-Umgebung beschränkt fest.
Verwendet Ihr Client HTTP oder TCP für den Zugriff auf Ihre Container-App? Vergewissern Sie sich, dass Eingangstyp auf das korrekte Protokoll festgelegt ist (HTTP oder TCP).
Unterstützt Ihr Client mTLS? Vergewissern Sie sich, dass Clientzertifikatmodus auf Erfordern festgelegt ist (nur, wenn Ihr Client mTLS unterstützt). Weitere Informationen finden Sie unter Konfigurieren der Clientzertifikatauthentifizierung.
Verwendet Ihr Client HTTP/1 oder HTTP/2? Vergewissern Sie sich, dass Transport auf die korrekte HTTP-Version festgelegt ist (HTTP/1 oder HTTP/2).
Ist der Zielport korrekt festgelegt? Vergewissern Sie sich, dass Zielport auf den Port festgelegt ist, an dem Ihre Container-App lauscht, bzw. auf den Port, der vom Dockerfile Ihrer Container-App verfügbar gemacht wird.
Wird Ihre Client-IP-Adresse abgelehnt? Wenn IP-Sicherheitseinschränkungsmodus nicht auf Gesamten Datenverkehr zulassen festgelegt ist, vergewissern Sie sich, dass Ihr Client keine IP-Adresse hat, die verweigert wird.

Weitere Informationen finden Sie unter Eingang in Azure Container Apps.

Überprüfen der Netzwerkkonfiguration

Rekursive Resolver von Azure verwenden die IP-Adresse 168.63.129.16, um Anforderungen aufzulösen.

  1. Wenn Ihr VNet anstelle des von Azure bereitgestellten DNS-Standardservers einen benutzerdefinierten DNS-Server verwendet, konfigurieren Sie Ihren DNS-Server so, dass nicht aufgelöste DNS-Abfragen an 168.63.129.16 weitergeleitet werden.
  2. Achten Sie beim Konfigurieren Ihrer NSG oder Firewall darauf, die Adresse 168.63.129.16 nicht zu blockieren.

Weitere Informationen finden Sie unter Netzwerk in der Azure Container Apps-Umgebung.

Überprüfen der Konfiguration von Integritätstests

Vergewissern Sie sich für alle Arten von Integritätstests (Live-, Bereitschafts- und Starttests), die TCP als Transportprotokoll verwenden, dass die Portnummern dem Zielport für eingehenden Datenverkehr entsprechen, den Sie für Ihre Container-App konfiguriert haben.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
  3. Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
  4. Erweitern Sie auf der Navigationsleiste die Option Anwendung, und wählen Sie Container aus.
  5. Wählen Sie auf der Seite Container die Option Integritätstests aus.
  6. Erweitern Sie Livetests, Bereitschaftstests und Starttests.
  7. Vergewissern Sie sich bei jedem Test, dass der Wert für Port korrekt ist.

Werte für Port können wie folgt aktualisiert werden:

  1. Wählen Sie Bearbeiten und Bereitstellen aus, um eine neue Revision zu erstellen.
  2. Aktivieren Sie auf der Seite Erstellen und Bereitstellen einer neuen Revision das Kontrollkästchen neben Ihrem Containerimage, und wählen Sie Bearbeiten aus.
  3. Wählen Sie im Fenster Container bearbeiten die Option Integritätstests aus.
  4. Erweitern Sie Livetests, Bereitschaftstests und Starttests.
  5. Bearbeiten Sie für jeden Test den Wert für Port.
  6. Wählen Sie die Schaltfläche Speichern aus.
  7. Wählen Sie auf der Seite Erstellen und Bereitstellen einer neuen Revision die Schaltfläche Erstellen aus.

Konfigurieren von Integritätstests für längere Startzeit

Wenn eingehender Datenverkehr aktiviert ist, werden die folgenden Standardtests automatisch dem Hauptcontainer der App hinzugefügt, wenn nicht für jeden Typ einer definiert ist.

Hier finden Sie die Standardwerte für die einzelnen Arten von Tests:

Eigenschaft Startup Bereitschaft Livezustand
Protokoll TCP TCP TCP
Port Zielport für eingehenden Datenverkehr Zielport für eingehenden Datenverkehr Zielport für eingehenden Datenverkehr
Timeout 3 Sekunden 5 Sekunden Nicht zutreffend
Zeitraum 1 Sekunde 5 Sekunden Nicht zutreffend
Anfängliche Verzögerung 1 Sekunde 3 Sekunden Nicht zutreffend
Schwellenwert für Erfolg 1 1 Nicht zutreffend
Schwellenwert für Fehler 240 48 Nicht zutreffend

Wenn der Start Ihrer Container-App länger dauert (was in Java nicht ungewöhnlich ist), müssen Sie ggf. die Eigenschaft Anfängliche Verzögerung in Sekunden Ihrer Live- und Bereitschaftstests entsprechend anpassen. Sie können sich die Protokolle ansehen, um die typische Startzeit für Ihre Container-App zu ermitteln.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
  3. Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
  4. Erweitern Sie auf der Navigationsleiste die Option Anwendung, und wählen Sie Container aus.
  5. Wählen Sie auf der Seite Container die Option Integritätstests aus.
  6. Wählen Sie Bearbeiten und Bereitstellen aus, um eine neue Revision zu erstellen.
  7. Aktivieren Sie auf der Seite Erstellen und Bereitstellen einer neuen Revision das Kontrollkästchen neben Ihrem Containerimage, und wählen Sie Bearbeiten aus.
  8. Wählen Sie im Fenster Container bearbeiten die Option Integritätstests aus.
  9. Erweitern Sie Livetests.
  10. Wenn Aktivieren von Livetests ausgewählt ist, erhöhen Sie den Wert für Anfängliche Verzögerung in Sekunden.
  11. Erweitern Sie Bereitschaftstest.
  12. Wenn Aktivieren von Bereitschaftstests ausgewählt ist, erhöhen Sie den Wert für Anfängliche Verzögerung in Sekunden.
  13. Wählen Sie Speichern.
  14. Wählen Sie auf der Seite Erstellen und Bereitstellen einer neuen Revision die Schaltfläche Erstellen aus.

Anschließend können Sie sich die Protokolle ansehen, um zu ermitteln, ob Ihre Container-App erfolgreich startet.

Weitere Informationen finden Sie unter Integritätstests in Azure Container Apps.

Vergewissern, dass Datenverkehr an die richtige Revision weitergeleitet wird

Wenn Ihre Container-App nicht wie erwartet funktioniert, werden Anforderungen möglicherweise an eine veraltete Revision weitergeleitet.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
  3. Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
  4. Erweitern Sie auf der Navigationsleiste die Option Anwendung, und wählen Sie Revisionen aus.

Wenn Revisionsmodus auf Single festgelegt ist, wird der gesamte Datenverkehr standardmäßig an Ihre neueste Revision weitergeleitet. Auf der Registerkarte Aktive Revisionen sollte nur eine einzelne Revision angezeigt werden, und der Wert für Datenverkehr sollte auf 100% festgelegt sein.

Wenn Revisionsmodus auf Multiple festgelegt ist, vergewissern Sie sich, dass Datenverkehr nicht an veraltete Revisionen weitergeleitet wird.

Weitere Informationen zum Konfigurieren der Datenverkehrsaufteilung finden Sie unter Datenverkehrsaufteilung in Azure Container Apps.

Überprüfen, ob die aktuelle Version der Azure Container Apps-Erweiterung installiert ist

Falls Sie Fehler aufgrund fehlender Parameter erhalten, wenn Sie az containerapp-Befehle in Azure CLI oder Cmdlets aus dem Az.App-Modul in Azure PowerShell ausführen, stellen Sie sicher, dass die neueste Version der Azure Container Apps-Erweiterung installiert ist.

az extension add --name containerapp --upgrade

Überprüfen, ob die Azure Container Apps-Erweiterung Previewfunktionen zulässt

Wenn keine Previewfunktionen verfügbar sind, wenn Sie az containerapp-Befehle in der Azure CLI ausführen, aktivieren Sie Vorschaufeatures in der Azure Container Apps-Erweiterung.

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

Manuelles Löschen des von der Azure-Container-Apps-Umgebung verwendeten VNet

Wenn Sie die Meldung provisioningState: ScheduledForDelete erhalten, ihre Umgebung jedoch nicht tatsächlich gelöscht werden kann, stellen Sie sicher, dass Sie das zugeordnete VNet manuell löschen.

  1. Identifizieren Sie das VNet, das von der Umgebung verwendet wird, die Sie löschen möchten. Ersetzen Sie die <PLATZHALTER> durch Ihre Werte.

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

    Suchen Sie infrastructureSubnetId und notieren Sie sich in der Ausgabe die VNet-ID. Ein Beispiel für eine VNet-ID ist vNet::myVNet.id.

  2. Manuelles Löschen des VNet:

    az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
    
  3. Löschen der Azure Container Apps-Umgebung:

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

Nächste Schritte