Wie behebe ich Fehler bei meinen fehlgeschlagenen Amazon ECS-Bereitstellungen?
Ich möchte Fehler beheben, aufgrund derer meine Amazon Elastic Container Service (Amazon ECS)-Bereitstellung fehlschlägt.
Kurzbeschreibung
Wenn du versuchst, eine neue Anwendung bereitzustellen, kann es bei Amazon ECS zu einem Stillstand bei der Bereitstellung kommen. Die älteren Aufgaben werden weiterhin bereitgestellt, aber neue Aufgaben können keinen stabilen Zustand erreichen. Die Amazon ECS-Bereitstellungen schlagen möglicherweise aufgrund der folgenden Probleme fehl:
- Ressourcen-Beschränkungen
- Probleme mit dem Container-Image
- Probleme mit dem Netzwerk
- Probleme mit der Aufgabendefinition
- Amazon CloudWatch Logs
- Konfiguration der Zustandsprüfung
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Ressourcen-Beschränkungen
Die Amazon ECS-Servicebereitstellung schlägt möglicherweise fehl, wenn an der Stelle, an der du die Aufgabe bereitstellst, nicht genügend CPU- oder Speicherkapazität verfügbar ist. Eine Ressourcenbeschränkung tritt auf, wenn der Fehler RESOURCE:* in den Serviceereignissen auftritt und die Amazon ECS-Aufgaben nicht in den Zustand Wird ausgeführt übergehen.
Gehe wie folgt vor, um dieses Problem zu beheben:
- Verwende Amazon CloudWatch-Metriken, um die Ressourcenkapazität des Amazon ECS-Clusters zu überwachen.
- Richte Container Insights für detaillierte Metriken zur Ressourcennutzung auf Aufgaben- und Containerebene ein.
- Stelle sicher, dass die Einstellungen der Auto-Scaling-Gruppe mit den Workload-Anforderungen für den Starttyp-Cluster von Amazon Elastic Compute Cloud (Amazon EC2) übereinstimmen. Überwache die Instance-Kapazität und konfiguriere Skalierungsrichtlinien auf der Grundlage von CPU-Auslastung, Speicherauslastung oder benutzerdefinierten Metriken.
- Überprüfe die Elastic-Network-Schnittstellenkapazität für die Amazon ECS-Aufgabe für den awsvpc-Netzwerkmodus. Verwende Instance-Typen mit höheren Grenzwerten bei Elastic-Network-Schnittstellen für dichte Bereitstellungen. Jede Aufgabe benötigt eine eigene Elastic-Network-Schnittstelle. Verwende CIDR-Planung und überwache die Elastic-Network-Schnittstelle, um sicherzustellen, dass genügend IP-Adressen verfügbar sind, wo du die Amazon ECS-Aufgabe startest.
Führe den AWS-CLI-Befehl list-container-instances aus, um nach verfügbaren Ressourcen auf Container-Instances zu suchen:
aws ecs list-container-instances --cluster your-cluster-name
Hinweis: Ersetze your-cluster-name durch den Namen des Clusters.
Führe dann den Befehl describe-container-instances aus:
aws ecs describe-container-instances --cluster your-cluster-name --container-instances container-instance-id
Hinweis: Ersetze your-cluster-name durch den Namen deines Clusters und container-instance-id durch die Instance-ID deines Containers.
Probleme mit dem Container-Image
Wenn Amazon ECS keine Images aus einem Ressourcen-Repository abrufen kann, schlagen die Aufgaben mit einem CannotPullContainerError-Fehler in den Serviceereignissen fehl. Möglicherweise siehst du verwandte Aufgaben in den Agent-Protokollen der Container-Instance.
Um diesen Fehler zu beheben, bestätige die folgenden Konfigurationen der Aufgabendefinition für die Amazon ECS-Aufgabe und die Netzwerkkonfiguration für den Service:
-
Konfiguriere die Container-Image-URI.
Stelle für Amazon Elastic Container Registry (Amazon ECR) sicher, dass das Image dem folgenden Dateinamenformat entspricht:account-id.dkr.ecr.region.amazonaws.com/repository-name:tagHinweis: Ersetze account-id durch deine Konto-ID, region durch deine AWS-Region und repository-name durch den Namen deines Repositorys.
Stelle für Docker Hub sicher, dass das Image dem folgenden Dateinamenformat entspricht:
repository/image:tagHinweis: Ersetze repository durch den Namen eines Repositorys.
-
Stelle sicher, dass der IAM-Rolle zur Amazon ECS-Aufgabenausführung die AmazonECSTaskExecutionRolePolicy-Berechtigung zugeordnet ist.
-
Vergewissere dich, dass in der Aufgabendefinition keine Platzhalter für die Umgebung fehlen oder falsch sind.
-
Wenn du den Amazon ECS-Service in einem privaten Subnetz bereitstellst, ordne die VPC-Endpunkte demselben Subnetz und derselben Sicherheitsgruppe zu.
Für Schnittstellenendpunkte:
Verwende für Amazon ECS com.amazonaws.region.ecs.
Verwende für CloudWatch Logs com.amazonaws.us-east-1.logs.
Verwende für Amazon ECR (Docker) com.amazonaws.us-east-1.ecr.dkr.
Verwende für die Amazon ECR-API com.amazonaws.us-east-1.ecr.api.
Für Gateway-Endpunkte:
Verwende für Amazon S3 com.amazonaws.us-east-1.s3.
Probleme mit dem Netzwerk
Netzwerkprobleme treten auf, wenn Container nicht mit externen Services kommunizieren können, die Serviceerekennung fehlschlägt oder Aufgaben die erforderlichen Endpunkte nicht erreichen können. Möglicherweise erhältst du Timeout-Fehler in den Anwendungsprotokollen, DNS-Auflösungsfehler oder Verbindungsprobleme zwischen Containern und anderen AWS-Services. Gehe wie folgt vor, um dieses Problem zu beheben.
- Stelle sicher, dass die Regeln für eingehenden Datenverkehr für den Amazon ECS-Service den Datenverkehr zu deinen Containern zulassen.
- Vergewissere dich, dass die Sicherheitsgruppenregeln zwischen den Services korrekt konfiguriert sind.
- Vergewissere dich, dass die öffentlichen Subnetze über ein Internet-Gateway Routen zum Internet haben.
- Überprüfe deine NAT-Gateway-Konfigurationen für private Subnetze.
- Stelle sicher, dass für die CIDR-Bereiche ausreichend IP-Adressen in den Subnetzen verfügbar sind.
- Stelle bei konfigurierten Application Load Balancern sicher, dass die Application Load Balancer-Sicherheitsgruppe eine Regel für eingehenden Datenverkehr in der Sicherheitsgruppe zulässt.
CloudWatch Logs
Gehe wie folgt vor, um die CloudWatch Logs zur Behebung einer fehlgeschlagenen Amazon ECS-Aufgabe zu überprüfen:
- Öffne die Amazon-ECS-Konsole.
- Wähle im Navigationsbereich die Option Cluster aus.
- Wähle deinen Cluster aus.
- Wähle die Registerkarte Aufgaben aus.
- Wähle die Aufgaben-ID für die fehlgeschlagene Aufgabe aus.
- Überprüfe den Angehalten-Status, um festzustellen, warum der Container ausgefallen ist.
Hinweis: Die Protokolle für die angehaltene Aufgabe sind nur eine Stunde lang verfügbar, nachdem die ECS-Aufgabe angehalten wurde. - Behebe den Container-Ausfall.
Konfiguration der Zustandsprüfung
Überprüfe die folgenden Einstellungen für die Zustandsprüfung im Application Load Balancer oder Network Load Balancer:
- Vergewissere dich, dass die Einstellung HealthCheckTimeoutSeconds lang genug ist, damit der Container erfolgreich ist. Wenn die ECS-Aufgabe die Load Balancer-Zustandsprüfung innerhalb eines kurzen Zeitraums nicht besteht, ändere diesen Wert.
- Stelle sicher, dass die Einstellung HealthCheckGracePeriodSeconds lang genug ist, damit der Container gestartet werden kann.
- Prüfe, ob der Anwendungscontainer mit dem Statuscode 200 auf dem im Load Balancer konfigurierten HealthCheckPath reagiert. Weitere Informationen findest du in der Einstellung HealthCheckPath unter Zustandsprüfungen für Application Load Balancer-Zielgruppen.
Gehe wie folgt vor, um fehlgeschlagene Zustandsprüfungen zu finden:
- Öffne die Amazon-EC2-Konsole.
- Erweitere im Navigationsbereich Lastenausgleich und wähle dann Zielgruppen aus.
- Wähle den Namen der Zielgruppe aus.
- Überprüfe die Details deiner Zielgruppe auf fehlerfreie oder fehlerhafte Instances.
Informationen zur Behebung der fehlerhaften Instances findest du unter Problembehandlung bei Application Load Balancern.
Ähnliche Informationen
- Themen
- Storage
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 9 Monaten
AWS OFFICIALAktualisiert vor einem Jahr