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.
- Melden Sie sich beim Azure-Portal an.
- Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
- Wählen Sie im Abschnitt Ressourcen den Namen Ihrer Container-App aus.
- Erweitern Sie auf der Navigationsleiste die Option Überwachung, und wählen Sie Protokollstream (nicht Protokolle) aus.
- 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.
- 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.
- Melden Sie sich beim Azure-Portal an.
- Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
- Wählen Sie im Abschnitt Ressourcen den Namen Ihrer Container-App aus.
- Wählen auf der Navigationsleiste die Option Diagnose und Problembehandlung aus.
- Wählen Sie auf der Seite Diagnose und Problembehandlung eine der Problembehandlungskategorien aus.
- 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.
- Melden Sie sich beim Azure-Portal an.
- Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
- Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
- 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.
- 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. - 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.
- Melden Sie sich beim Azure-Portal an.
- Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
- Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
- Erweitern Sie auf der Navigationsleiste die Option Anwendung, und wählen Sie Container aus.
- Wählen Sie auf der Seite Container die Option Integritätstests aus.
- Erweitern Sie Livetests, Bereitschaftstests und Starttests.
- Vergewissern Sie sich bei jedem Test, dass der Wert für Port korrekt ist.
Werte für Port können wie folgt aktualisiert werden:
- Wählen Sie Bearbeiten und Bereitstellen aus, um eine neue Revision zu erstellen.
- Aktivieren Sie auf der Seite Erstellen und Bereitstellen einer neuen Revision das Kontrollkästchen neben Ihrem Containerimage, und wählen Sie Bearbeiten aus.
- Wählen Sie im Fenster Container bearbeiten die Option Integritätstests aus.
- Erweitern Sie Livetests, Bereitschaftstests und Starttests.
- Bearbeiten Sie für jeden Test den Wert für Port.
- Wählen Sie die Schaltfläche Speichern aus.
- 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.
- Melden Sie sich beim Azure-Portal an.
- Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
- Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
- Erweitern Sie auf der Navigationsleiste die Option Anwendung, und wählen Sie Container aus.
- Wählen Sie auf der Seite Container die Option Integritätstests aus.
- Wählen Sie Bearbeiten und Bereitstellen aus, um eine neue Revision zu erstellen.
- Aktivieren Sie auf der Seite Erstellen und Bereitstellen einer neuen Revision das Kontrollkästchen neben Ihrem Containerimage, und wählen Sie Bearbeiten aus.
- Wählen Sie im Fenster Container bearbeiten die Option Integritätstests aus.
- Erweitern Sie Livetests.
- Wenn Aktivieren von Livetests ausgewählt ist, erhöhen Sie den Wert für Anfängliche Verzögerung in Sekunden.
- Erweitern Sie Bereitschaftstest.
- Wenn Aktivieren von Bereitschaftstests ausgewählt ist, erhöhen Sie den Wert für Anfängliche Verzögerung in Sekunden.
- Wählen Sie Speichern.
- 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.
- Melden Sie sich beim Azure-Portal an.
- Geben Sie auf der Leiste Suchen den Namen Ihrer Container-App ein.
- Wählen Sie unter Ressourcen den Namen Ihrer Container-App aus.
- 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.
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 istvNet::myVNet.id
.Manuelles Löschen des VNet:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Löschen der Azure Container Apps-Umgebung:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes