Direkt zum Inhalt

Häufig gestellte Fragen: Amazon ECS-Aufgaben, die sich in einem Lebenszyklusstatus befinden

Lesedauer: 7 Minute
0

Ich möchte wissen, warum meine Amazon Elastic Container Service (Amazon ECS)-Aufgabe in einem bestimmten Lebenszyklusstatus feststeckt.

Q: Warum bleibt meine Amazon ECS-Aufgabe im Status PROVISIONING hängen?

Wenn der ECS-Scheduler keine geeignete ECS-Instance im Starttyp Amazon Elastic Compute Cloud (Amazon EC2) finden kann, verbleibt eine Aufgabe, die den Starttyp verwendet, möglicherweise im Status PROVISIONING. Dies geschieht auch dann, wenn auf vorhandenen Container-Instances Speicherplatz für die Ausführung der Aufgabe verfügbar ist.

Aufgaben im Status PROVISIONING bilden eine Warteschlange. Amazon ECS fügt der Warteschlange Aufgaben hinzu, die aufgrund von Ressourcenbeschränkungen in Bezug auf Speicher, Ports, Elastic-Network-Schnittstellen, GPU und CPUs nicht bereitgestellt werden können. Sobald zusätzliche Ressourcen verfügbar werden, gehen diese Aufgaben in den Status RUNNING über.

Wenn du die Skalierung für den Kapazitätsanbieter verwaltest, schlagen Aufgaben nicht sofort fehl, wenn sie nicht genügend Ressourcen auf vorhandenen Instances abrufen können. Stattdessen wechseln die Aufgaben in den Status PROVISIONING. Wenn du die Skalierung nicht verwaltest, schlagen Aufgaben, die keine Kapazität finden, sofort fehl.

Wenn Probleme auftreten und Aufgaben im awsvpc-Modus keine Elastic-Network-Schnittstellen bereitstellen können, verbleiben sie möglicherweise im Status PROVISIONING. AWS Fargate-Aufgaben können auch im Status PROVISIONING verbleiben, wenn Probleme auftreten und sie keine Elastic-Network-Schnittstellen bereitstellen können. 

Q: Warum wechseln meine Amazon ECS-Aufgaben vom Status PROVISIONING in den Status STOPPED, wenn sie einen Kapazitätsanbieter verwenden?

Ein ECS kann aus den folgenden Gründen im PROVISIONING-Status hängen bleiben:

  • Fehler bei der Konfiguration
  • Ressourcen-Beschränkungen
  • Abweichung von den Spezifikationen des Kapazitätsanbieters

Gehe wie folgt vor, um diese Probleme zu beheben:

  • Prüfe, ob die Auto-Scaling-Gruppe, die dem Kapazitätsanbieter zugeordnet ist, ihre maximale Instance-Anzahl erreicht hat. Wenn das Limit erreicht ist, kann ECS keine zusätzlichen Aufgaben bereitstellen.

  • Wenn du den Amazon EC2-Starttyp mit einer Startvorlage verwendest, die der Auto-Scaling-Gruppe zugeordnet ist, überprüfe die Benutzerdaten. Stelle sicher, dass du den richtigen Clusternamen im folgenden Format haben:

    #!/bin/bash
    echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
  • Stelle sicher, dass die ecsInstanceRole-Richtlinie mit der richtigen Vertrauensbeziehung an die Instances angehängt ist, die der Auto-Scaling-Gruppe zugeordnet sind.

  • Überprüfe die Ereignisse des Amazon ECS-Service. Wenn du den folgenden Fehler siehst, wird die Instance gestartet, aber nicht für den angeschlossenen Load Balancer eingerichtet:
    Das Ziel befindet sich in einer Availability Zone, die für den Load Balancer nicht aktiviert ist

  • Stelle sicher, dass sich die für die Aufgabe vorgesehenen Subnetze und die Container-Instances, die der Kapazitätsanbieter verwaltet, in derselben Availability Zone befinden. Du musst dich in derselben Availability Zone für Aufgaben befinden, die du mit einer Kapazitätsanbieterstrategie im aws-vpc-Netzwerkmodus starten.

  • Für Aufgaben, die den awsvpc-Netzwerkmodus auf EC2-Linux-Instances verwenden, werden Elastic-Network-Schnittstellen nicht mit öffentlichen IP-Adressen bereitgestellt. Um auf das Internet zuzugreifen, musst du Aufgaben in einem privaten Subnetz starten, das für die Verwendung eines NAT-Gateways konfiguriert ist. Aufgaben, die du in öffentlichen Subnetzen startest, haben keinen Zugriff auf das Internet und bleiben möglicherweise im Status PROVISIONING hängen.

Weitere Informationen findest du unter Amazon ECS-Serviceereignismeldungen anzeigen.

Q. Warum bleibt meine Amazon ECS-Aufgabe im Status PENDING hängen?

Wenn Amazon ECS darauf wartet, dass der Container-Agent weitere Maßnahmen ergreift, wechselt die Aufgabe in den Status PENDING. Die Aufgabe bleibt in diesem Zustand, bis Ressourcen für die Aufgabe zur Verfügung gestellt werden.

Weitere Informationen findest du unter Warum bleibt meine Amazon ECS-Aufgabe im Status PENDING hängen?

Q: Warum bleibt meine Amazon ECS-Aufgabe im Status ACTIVATING hängen?

Wenn der Hauptprozess in den Containern in den Status RUNNING übergeht und Amazon ECS weitere Schritte ausführt, wechselt die Aufgabe in den Status ACTIVATING. Beispielsweise musst du Serviceerkennungsressourcen für Aufgaben erstellen, die Serviceerkennung verwenden.

Bei Aufgaben, die Teil eines Services sind, der mehrere Elastic Load Balancing-Zielgruppen verwendet, erfolgt die Zielgruppenregistrierung in diesem Zustand. Wenn sich die Aufgabe im Status ACTIVATING befindet, wartet Amazon ECS darauf, dass die entsprechenden Aktionen in den Ressourcen für die Zielgruppenregistrierung oder Serviceerkennung abgeschlossen sind.

Q: Warum steckt meine Aufgabe, die Serviceerkennung verwendet, im Status ACTIVATING fest?

Suche im AWS CloudTrail-Ereignisverlauf nach den entsprechenden Serviceerkennungs-API-Aufrufen, z. B. den folgenden:

  • CreatePrivateDnsNamespace
  • CreateService
  • RegisterInstance
  • UpdateInstanceCustomHealthStatus

Die vorherigen API-Aktionen sind in der von AWS verwalteten Richtlinie Amazon ECSServiceRolePolicy definiert. Wenn der API-Aufruf mit einem Fehlercode wie ServiceNotFound oder InternalFailure fehlgeschlagen ist, stelle sicher, dass du die Überlegungen zur Serviceerkennung befolgen.

Q: Warum steckt eine Aufgabe, die die Elastic Load Balancing-Zielgruppe verwendet, im Status ACTIVATING fest?

Wenn Amazon ECS lange braucht, um den Zustand des Containers zu ermitteln, bleibt die Aufgabe möglicherweise im Status ACTIVATING hängen. Um die benötigte Gesamtzeit zu berechnen, multipliziere die Parameter HealthCheckIntervalSeconds und HealthyThresholdCount. Reduziere die Anzahl der Prüfungen und das Intervall zwischen den Prüfungen, um die Zustandsprüfung zu beschleunigen. Überprüfe die CloudTrail-Ereignisse, um festzustellen, ob Fehler oder Ausfälle für die entsprechenden RegisterTargets-API-Aufrufe von Elastic Load Balancing gemeldet werden.

Q: Warum bleibt meine Amazon ECS-Aufgabe im Status RUNNING hängen, obwohl sie eigentlich im Status STOPPED sein sollte?

Probleme mit der Anwendung oder eine falsch konfigurierte Aufgabe können dazu führen, dass die Aufgabe im Status RUNNING verbleibt.

Gehe wie folgt vor, um diese Probleme zu beheben:

  • Überprüfe die Anwendungsprotokolle auf Fehler oder Informationen darüber, warum der Container nicht beendet wird. Nach dem Beenden des essenziellen Containers geht die Aufgabe in den Status STOPPED über.
  • Wenn die Aufgabe Teil eines Amazon ECS-Service ist, stelle sicher, dass die DeploymentConfiguration-Parameter korrekt eingestellt sind.
  • Wenn die Aufgabe Teil eines Amazon ECS-Service ist, der einen Load Balancer verwendet, stelle sicher, dass der Parameter Verzögerung bei der Abmeldung korrekt eingestellt ist.
  • Prüfe, ob der Wert ECS_CONTAINER_STOP_TIMEOUT richtig gesetzt ist.
  • Schalte Amazon ECS Exec für die Aufgabe ein. Verwende dann ECS Exec, um sich beim Container anzumelden und das Problem in der Anwendung zu beheben.

Weitere Informationen findest du unter Wie behebe ich Amazon-ECS-Aufgaben, deren Beendigung lange dauert, wenn die Container-Instance auf DRAINING gesetzt ist?

Q: Warum bleibt meine Amazon ECS-Aufgabe im Status DEACTIVATING hängen?

Im Status DEACTIVATING führt Amazon ECS zusätzliche Schritte aus, bevor die Aufgabe gestoppt wird. Bei Aufgaben, die Teil eines Services sind, der mehrere Elastic Load Balancing-Zielgruppen verwendet, erfolgt die Abmeldung der Zielgruppe beispielsweise in diesem Zustand.

Die folgenden Gründe können dazu führen, dass die Aufgabe im Status DEACTIVATING verbleibt:

  • Du löschst die Ressourcen, die sich auf die Elastic Load Balancing-Zielgruppen beziehen, bevor die Aufgabe von den Zielgruppen abgemeldet werden kann.
  • Die benutzerdefinierte Rolle, die bei der Erstellung des Amazon ECS-Service als Parameter angegeben wird, verfügt nicht über die erforderlichen Elastic Load Balancing-Berechtigungen.
  • Du löschst die benutzerdefinierte Rolle, wenn die Aufgabe aktiv ist.

Stelle sicher, dass die Zielgruppe und die AWS Identity and Access Management (IAM)-Rolle, die du in der Servicedefinition angegeben haben, vorhanden sind. Stelle außerdem sicher, dass die Servicedefinition die erforderlichen Vertrauensrichtlinien und Elastic Load Balancing-Berechtigungen enthält.

Um die Zeit zu optimieren, die eine Aufgabe benötigt, um den Status DEACTIVATING zu verlassen, optimiere die Parameter deregistration_delay.timeout_seconds und deregistration_delay.timeout_seconds. Weitere Informationen findest du unter Load Balancer Connection Draining.

Q: Warum bleibt meine Amazon ECS-Aufgabe im Status DEPROVISIONING hängen?

Amazon ECS führt zusätzliche Schritte aus, nachdem die Aufgabe beendet wurde, aber bevor die Aufgabe in den Status STOPPED übergeht. Beispielsweise trennt Amazon ECS bei Aufgaben, die den awsvpc-Netzwerkmodus verwenden, die Elastic-Network-Schnittstelle und löscht sie.

Die folgenden Gründe können dazu führen, dass die Aufgabe im Status DEPROVISIONING verbleibt:

  • Du hast die serviceverknüpften Rollen, die dem Service zugeordnet sind, gelöscht, bevor die Aufgabe beendet wurde. Der Service definiert die serviceverknüpften Rollen im Voraus und beinhaltet alle Berechtigungen, die der Service benötigt, um andere AWS-Services im Namen aufzurufen. Führe den folgenden Befehl aus, um zu überprüfen, ob dem Service eine serviceverknüpfte Rolle zugeordnet ist:

    $aws ecs describe-services --cluster CLUSTER-NAME --services SERVICE-NAME
  • Du hast die Zielgruppe gelöscht, bevor die Aufgaben von der Zielgruppe abgemeldet wurden.

AWS OFFICIALAktualisiert vor 2 Jahren