Direkt zum Inhalt

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 die Amazon ECS-Container in der Aufgabe Zustandsprüfungen verwenden, die der Service nicht bestehen kann, erhältst du die folgende Fehlermeldung:

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

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.

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

Bevor du den Containe für Amazon ECS bereitstellst, stelle sicher, dass sie erwartungsgemäß funktioniert. Teste den Container mit HEALTHCHECK auf der Docker Docs-Website. Vergewissere dich, dass der Container die Zustandsprüfung in Dockerfile besteht. Gib 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.

Sicherstellen, dass die richtige Syntax für die Amazon ECS-Aufgaben verwendet wird

Vergewissere dich, dass der Befehl, den du an den Container übergibst, korrekt ist und dass du die richtige Syntax für die Befehle verwendest. Trenne den Zustandsprüfungs-Befehl nicht durch doppelte Anführungszeichen, wie z. B. ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. Verwende 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, besteht sie möglicherweise die Container-Zustandsprüfung nicht. Stelle startPeriod im Parameter für die erweiterte Container-Definition so ein, dass er deinen Konfigurationsanforderungen entspricht.

Bei Aufgaben, die über einen längeren Zeitraum ausgeführt werden, Anwendungsprotokolle überprüfen

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

Hinweis: AWS Fargate ist ein verwalteter Service, sodass du nicht auf die zugrunde liegende Infrastruktur zugreifen kannst. Um dieses Problem bei Fargate zu beheben, starte die Amazon ECS-Aufgaben in Amazon Elastic Compute Cloud (Amazon EC2). Verwende dann SSH, um eine Verbindung zu den Amazon EC2-Instances herzustellen. Du kannst auch ECS Exec verwenden, um direkt mit den Amazon ECS-Containern zu interagieren.

Ähnliche Informationen

Wie kann ich dafür sorgen, dass meine Amazon ECS-Aufgaben, die den Amazon EC2-Starttyp verwenden, die Application Load Balancer-Zustandsprüfung bestehen?