Wie behebe ich Probleme bei der Container-Zustandsprüfung für Amazon ECS-Aufgaben?

Lesedauer: 3 Minute
0

Meine Amazon Elastic Container Service (Amazon ECS)-Aufgabe besteht die Container-Zustandsprüfung nicht.

Kurzbeschreibung

Wenn Sie die folgende Fehlermeldung erhalten, verwenden die Amazon ECS-Container in der Aufgabe Zustandsprüfungen, die der Service nicht bestehen kann:

(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks

Lösung

Gehen Sie wie folgt vor, um Fehler bei der Zustandsprüfung von Amazon ECS-Containern zu beheben:

  • Bevor Sie die Bereitstellung für Amazon ECS vornehmen, testen Sie den Container lokal, um sicherzustellen, dass er die Container-Zustandsprüfungen besteht.
  • Vergewissern Sie sich, dass der Befehl, den Sie an den Container übergeben, korrekt ist und dass Sie die richtige Syntax für Ihre Amazon ECS-Aufgaben verwenden.
  • Geben Sie Ihrem Container genügend Zeit, um zu starten.
  • Wenn die Amazon ECS-Aufgabe über einen längeren Zeitraum ausgeführt wird, überprüfen Sie die Anwendungsprotokolle und Amazon CloudWatch-Protokolle.

Testen Sie den Container lokal, um sicherzustellen, dass er die Container-Zustandsprüfung besteht

Bevor Sie den Container für Amazon ECS bereitstellen, stellen Sie sicher, dass der Container erwartungsgemäß funktioniert und die angegebene Container-Zustandsprüfung bestehen kann. Testen Sie den Container mit der Konfiguration der Dockerfile-ZUSTANDSPRÜFUNG auf der Docker-Website. Vergewissern Sie sich, dass der Container die in der Dockerfile definierte Zustandsprüfung besteht. Geben Sie dann die Konfiguration der Zustandsprüfung in der Aufgabendefinition an, damit der Amazon ECS-Container-Agent die Zustandsprüfung überwachen und melden kann.

**Hinweis:**Amazon ECS überwacht keine Docker-Zustandsprüfungen, die in ein Container-Bild eingebettet und nicht in der Container-Definition angegeben sind. Zustandsprüfungsparameter, die in einer Container-Definition angegeben sind, überschreiben Docker-Zustandsprüfungen, die im Container-Bild vorhanden sind.

Vergewissern Sie sich, dass Sie die richtige Syntax für die Amazon ECS-Aufgaben verwenden

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Verwenden Sie die richtigen Befehle und Syntax für die Amazon ECS-Aufgaben. Wenn Sie das JSON-Panel der AWS-Managementkonsole, die AWS-CLI oder APIs verwenden, setzen Sie die Liste der Befehle in Klammern.

Beispielbefehl:

["CMD-SHELL", "curl -f http://localhost/ || exit 1"]

Wenn Sie die AWS-Managementkonsole verwenden, um die ECS-Aufgabe zu bearbeiten, müssen Sie die Klammern nicht mit aufnehmen:

CMD-SHELL, Curl -f http://localhost/ || exit 1

Trennen Sie den Zustandsprüfungs-Befehl nicht durch doppelte Anführungszeichen, wie z. B. ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. Verwenden Sie stattdessen die folgende Befehlssyntax:

["CMD-SHELL", "healthcheck.sh || exit 1"]

Dem Container genügend Zeit geben, um zu starten

Wenn die Initiierung des Containers lange dauert, kann es sein, dass der Container die Container-Zustandsprüfung nicht besteht. Legen Sie den startPeriod im Parameter für die erweiterte Container-Definition fest. Dadurch hat Ihr Amazon ECS-Container Zeit für den Bootstrap, bevor alle fehlgeschlagenen Zustandsprüfungen in die maximale Anzahl von Wiederholungsversuchen aufgenommen werden.

Bei Aufgaben, die über einen längeren Zeitraum ausgeführt werden, überprüfen Sie Ihre Anwendungsprotokolle und Amazon CloudWatch-Protokolle

Wenn der Amazon ECS-Container über eine lange Zeit ausgeführt wird und die Container-Zustandsprüfung nicht besteht, überprüfen Sie die Anwendungsprotokolle. Wenn die Amazon ECS-Aufgabe den awslogs-Protokolltreiber verwendet, überprüfen Sie die Anwendungsprotokolle auf CloudWatch.

**Hinweis:**AWS Fargate ist ein verwalteter Service. Daher können Sie nicht auf die zugrunde liegende Infrastruktur zugreifen. Um dieses Problem zu beheben, starten Sie die Amazon ECS-Aufgaben in Amazon Elastic Compute Cloud (Amazon EC2). Verwenden Sie dann SSH, um eine Verbindung zu den Amazon EC2-Instances herzustellen. Sie können auch Amazon ECS Exec verwenden, um direkt mit den ECS-Containern zu interagieren.

Ähnliche Informationen

Wie kann ich meine Amazon-ECS-Aufgaben mithilfe des Amazon-EC2-Starttyps ausführen, um die Application Load Balancer-Zustandsprüfung in Amazon ECS erfolgreich durchzuführen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr