Wie behebe ich eine Amazon ECS-Aufgabe, die in einer Bereitstellungsschleife feststeckt?
Meine Amazon Elastic Container Service (Amazon ECS)-Aufgaben stecken im Status BEREITSTELLUNG fest.
Behebung
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.
Um dieses Problem zu beheben, sieh dir die Amazon ECS-Service-Ereignisse für den betroffenen Service an, um nach aktuellen Bereitstellungsaktivitäten und -Fehlern zu suchen. Ermittle anhand der Ereignismuster und Fehlermeldungen, ob das Problem mit Kapazitäts-, Netzwerk- oder Konfigurationsproblemen zusammenhängt. Um weitere Details zu Fehlern beim Starten von Aufgaben zu erfahren, suche in den Fehlermeldungen für angehaltene Aufgaben nach TaskFailedToStart-Fehlern.
Überprüfen der Konfiguration deines Kapazitätsanbieters
Um zu überprüfen, ob die Amazon EC2 Auto-Scaling-Gruppe des Kapazitätsanbieters bei der Aufgabenbereitstellung ihre maximale Kapazität erreicht, führe den folgenden AWS-CLI-Befehl describe-auto-scaling-groups aus:
aws autoscaling describe-auto-scaling-groups \ --auto-scaling-group-names your-asg-name \ --query 'AutoScalingGroups[].{DesiredCapacity:DesiredCapacity,MaxSize:MaxSize,RunningInstances:Instances[?LifecycleState==InService].InstanceId|length}'
Hinweis: Ersetze your-asg-name durch den Namen deiner EC2 Auto-Scaling-Gruppe.
Um alle Container-Instances und ihren Status anzuzeigen, führe den folgenden Befehl list-container-instances aus:
aws ecs list-container-instances \ --cluster your-cluster-name \ --status ACTIVE \ --query 'containerInstanceArns[]'
Um die Kapazität der Auto-Scaling-Gruppe zu erhöhen, führe den folgenden Befehl update-auto-scaling-group aus:
aws autoscaling update-auto-scaling-group \ --auto-scaling-group-name your-asg-name \ --max-size new-max-size
Hinweis: Ersetze your-asg-name durch den Namen deiner EC2 Auto-Scaling-Gruppe und ersetze new-max-size durch die aktualisierte Größe der EC2 Auto-Scaling-Gruppe.
Stelle außerdem sicher, dass der Amazon ECS-Agent auf den Container-Instances ausgeführt wird und fehlerfrei ist.
Weitere Informationen zur Behebung von Fehlern bei Kapazitätsanbietern findest du unter Wie behebe ich Probleme, wenn ich versuche, einen neuen Kapazitätsanbieter einzurichten oder einen vorhandenen Kapazitätsanbieter für meinen Amazon ECS-Cluster zu aktualisieren?
Überprüfen der Service-Konfiguration und Aufgabenskalierung
Stelle sicher, dass die gewünschte Anzahl des Service der verfügbaren Infrastrukturkapazität in CPU und im Speicher auf den Container-Instances entspricht. Führe den folgenden Befehl describe-services aus, um die gewünschte Anzahl und die laufende Anzahl des Service anzuzeigen:
aws ecs describe-services \ --cluster your-cluster-name \ --services your-service-name \ --query 'services[].{desiredCount:desiredCount,runningCount:runningCount,pendingCount:pendingCount}'
Hinweis: Ersetze your-cluster-name durch den Cluster-Namen und your-service-name durch deinen Service-Namen.
Führe den folgenden Befehl update-service aus, um die gewünschte Anzahl des Service zu aktualisieren:
aws ecs update-service \ --cluster your-cluster-name \ --service your-service-name \ --desired-count new-count --force-new-deployment
Hinweis: Ersetzen your-cluster-name durch deinen Cluster-Namen, your-service-name durch deinen Service-Namen und new-count durch die gewünschte Aufgabenanzahl. Die Option**--force-new-deployment** erzwingt das Service-Update.
Überprüfen der Service Quotas
Wenn du die Amazon ECS-Service Quotas überschreitest, treten möglicherweise Aufgabenprobleme auf. Informationen zur Behebung von Problemen mit Service Quotas findest du unter Wie löse ich Probleme mit Amazon ECS-Service Quotas?
Überprüfen der Netzwerkkonfiguration
Überprüfe die Regeln der Aufgaben-Sicherheitsgruppe und stelle sicher, dass das Subnetz über verfügbare IP-Adressen verfügt. Richte für private Subnetze ohne NAT-Gateway die erforderlichen VPC-Endpunkte für die Konfiguration ein. Die VPC-Endpunkt-Sicherheitsgruppen müssen eingehenden Datenverkehr von deinem Aufgabensubnetz-CIDR zulassen.
Die Sicherheitsgruppen müssen außerdem den folgenden Datenverkehr zulassen:
- Ausgehenden HTTPS-Datenverkehr (Port 443) an Internet- oder NAT-Gateways, um Containerimages abzurufen.
- Ausgehenden Datenverkehr zu den VPC-Endpunkten, die du verwendest.
- Eingehenden Datenverkehr von der Application Load Balancer-Sicherheitsgruppe für Konfigurationen, die einen Application Load Balancer verwenden.
- Eingehenden Datenverkehr zwischen Containern, die kommunizieren müssen.
Um zu überprüfen, ob das Amazon ECS-Service-Subnetz die erforderliche IP-Adresse hat, führe den folgenden Befehl describe-subnets aus:
aws ec2 describe-subnets \ --subnet-ids subnet-abcde \ --query 'Subnets[].{SubnetId:SubnetId,AvailableIPs:AvailableIpAddressCount,TotalIPs:CidrBlock}'
Hinweis: Ersetze subnet-abcde durch deine Subnetz-ID.
Stelle sicher, dass du die Anforderungen für den Netzwerkmodus der Aufgabe erfüllst:
- Stelle für den awsvpc-Modus sicher, dass jede Aufgabe über eine dedizierte Elastic-Netzwerkschnittstelle verfügt.
Hinweis: Für jeden Instance-Typ gibt es ein maximales Kontingent für Netzwerkschnittstellen. Stelle sicher, dass die Container-Instances über verfügbare Netzwerkschnittstellen-Verbindungspunkte für neue Aufgaben verfügen. - Stelle für den bridge-Modus sicher, dass die docker0-Bridge genügend IP-Adressen in ihrem Pool hat.
- Für den host-Modus gibt es keine spezifischen Netzwerkressourcenbeschränkungen. Port-Konflikte können jedoch auftreten, wenn mehrere Aufgaben denselben Host-Port verwenden.
Ähnliche Informationen
Problembehandlung bei Amazon ECS
- Themen
- Containers
- Sprache
- Deutsch
