Warum kann meine Amazon EC2-Instance dem Amazon ECS-Cluster nicht beitreten?

Lesedauer: 6 Minute
0

Ich kann keinen Amazon Elastic Container Service (Amazon ECS)-Cluster verwenden, um meine Amazon Elastic Compute Cloud (Amazon EC2)-Instance zu registrieren.

Lösung

Verwende zunächst das AWS Systems Manager-Runbook AWSSupport-TroubleshootECSContainerInstance, um automatisch nach potenziellen Problemen zu suchen. Das AWSSupport-TroubleshootECSContainerInstance-Runbook behebt automatisch häufige Ursachen des Problems, dass die EC2-Instance einen Cluster nicht registrieren oder einem Cluster nicht beitreten kann.

Hinweis: Stelle sicher, dass du das AWSSupport-TroubleshootECSContainerInstance-Runbook in derselben AWS-Region wie dein Amazon ECS-Cluster und deine EC2-Instance verwendest.

Wenn die Ausgabe des Runbooks keine Empfehlungen enthält, ergreife die folgenden Maßnahmen, um das Problem manuell zu beheben.

Voraussetzungen:

  • Die EC2-Instance muss eine AWS Identity and Access Management (IAM, Identiäts- und Zugriffsmanagement)-Rolle haben, der die erforderlichen Berechtigungen für die Kommunikation mit der Amazon ECS-Konfiguration zugewiesen sind. Die IAM-Rolle für die Instance muss auch über die ecs:RegisterContainerInstance-Berechtigungen verfügen, damit Amazon ECS die Container-Instance beim Cluster registrieren kann. Wenn du die IAM-Rolle nicht anpassen musst, verwende die AmazonEC2ContainerServiceforEC2Role.
  • Stelle sicher, dass die Netzwerkkonfiguration der Container-Instance korrekt ist. Weitere Informationen findest du unter Die Netzwerkkonfiguration deiner Amazon ECS-Container-Instance ist falsch unter Wie kann ich den Fehler „CannotPullContainerError“ in meiner Amazon EC2-Starttyp-Aufgabe beheben?

Überprüfen des Status des Amazon-ECS-Agents auf der Amazon-Linux-2-Instance

Führe den folgenden Befehl aus, um zu überprüfen, ob der Amazon-ECS-Container-Agent auf der Instance ausgeführt wird:

sudo systemctl status ecs

Wenn der Container-Agent nicht auf der Instance ausgeführt wird, führe den folgenden Befehl aus, um den Agent zu starten:

sudo systemctl start ecs

Die Ausgabe des Befehls start ähnelt dem folgenden Beispiel:

Active: active (running)

Führe den folgenden Befehl aus, um zu überprüfen, ob der Docker-Service ausgeführt wird:

sudo systemctl status docker

Wenn der Docker-Service nicht ausgeführt wird, führe den folgenden Befehl aus, um den Service zu starten:

sudo systemctl start docker

Die Ausgabe des Befehls start ähnelt dem folgenden Beispiel:

Active: active (running)

Überprüfen der Startkonfigurationen

Wenn die Start-Instance Teil einer Auto-Scaling-Gruppe ist, stelle sicher, dass die Startkonfiguration der Auto-Scaling-Gruppe korrekt ist. Weitere Informationen findest du unter 5. Schritt Erstellen einer neuen Startkonfiguration unter Aktualisieren eines Amazon ECS-Container-Instance-Clusters mit einem neuen Amazon Machine Image (AMI).

Überprüfen des AMI der Container-Instance

Wenn das AMI der Container-Instance ein kopiertes oder benutzerdefiniertes AMI ist, stelle sicher, dass die Instance die folgenden Anforderungen erfüllt:

  • Eine Linux-Distribution, auf der mindestens Version 3.10 des Linux-Kernels ausgeführt wird.
  • Du verwendest die neueste Version des Amazon ECS Linux Container-Agents.
  • Der Docker-Daemon führt mindestens Version 1.9.0 und alle Docker-Laufzeitabhängigkeiten aus. Weitere Informationen findest du unter Install Docker Engine from binaries (Docker-Engine aus Binärdateien installieren) auf der Docker Docs-Website. Um die aktuelle Docker-Version anzuzeigen, führe den Befehl sudo docker version aus. Weitere Informationen findest du unter Install Docker Engine (Docker-Engine installieren) auf der Docker Docs-Website.

Diese Anforderungen sind auf Amazon ECS-optimierten AMIs vorkonfiguriert. Es hat sich bewährt, ein für Amazon ECS optimiertes AMI zu verwenden, es sei denn, die Anwendung erfordert eine Version, die in diesem AMI nicht verfügbar ist. Weitere Informationen findest du unter Abrufen von Amazon ECS-optimierten Linux-AMI-Metadaten.

Prüfen, ob die Benutzerdaten der Instance die richtigen Cluster-Informationen enthalten

Führe den folgenden Befehl aus, um zu überprüfen, ob die Benutzerdaten einer Instance die richtigen Cluster-Informationen enthalten:

#!/bin/bash  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config

Hinweis: Ersetze cluster-name durch deinen Clusternamen.

Überprüfen der Protokolldateien

Wenn das Problem weiterhin besteht, verwende den Amazon ECS-Protokollsammler, um die Protokolle zu sammeln. Überprüfe dann die Protokolle, um die Ursache zu ermitteln. Du kannst zudem die Protokolldateien auf dem Container-Host für den Amazon ECS-Container-Agent und den Docker überprüfen.

Führe die folgenden Befehle aus, um die Protokolldateien für den Amazon ECS-Container-Agent und den Docker anzuzeigen:

sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**sudo cat /var/log/docker

Hinweis: Ersetze YYYY-MM-DD durch das Datum, auf das du die Protokolldateien überprüfen möchtest.

Beheben häufig auftretender Fehler

Error: Launching a new EC2 instance. Status Reason: This account is currently blocked and not recognized as a valid account. Please contact if you have questions. Launching EC2 instance failed.

Dieser Fehler tritt auf, wenn dein Konto gesperrt ist und Amazon dein Konto nicht erkennt. Um das Konto zu entsperren, sende eine E-Mail mit der Bitte, dass AWS dein Konto entsperrt, an .

Error: re-registering: ClientException: Container instance 12345678910abcdefghixzy is inactive.\n\tstatus code: 400, request id: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Dieser Fehler tritt auf, wenn der Amazon ECS-Container-Agent den Cluster nicht verwenden kann, um die EC2-Container-Instance zu registrieren, weil die EC2-Instance inaktiv ist. Dieser Fehler hängt mit der Anwendung zusammen, die auf der Instance ausgeführt wird. Um die Ursache des Fehlers zu ermitteln, überprüfe zuerst die Anwendung. Wenn der Fehler weiterhin besteht, überprüfe die Amazon ECS-Container-Agent-Protokolle.

Error: Few instances are able to join the cluster but with the same configurations, other instance are not able to join the cluster.

Dieser Fehler tritt auf, wenn ein bestimmter API-Aufruf das Ratenkontingent überschreitet und zu einer ThrottlingException führt. Weitere Informationen findest du unter Anforderungsdrosselung für die Amazon ECS-API. Erhöhe das Ratenkontingent auf Kontoebene, um diesen Fehler zu beheben. Verwende AWS CloudTrail, um nach gängigen API-Aufrufen wie ListTasks and RegisterContainerInstance zu suchen.

Error: After changing the instance type, new instances are unable to join the cluster.

Dieser Fehler tritt auf, wenn der Amazon ECS-Container-Agent im Status Ausstehend feststeckt und du den Instance-Typ nicht ändern kannst. Gehe wie folgt vor, um den Instance-Typ in Amazon ECS zu ändern:

  1. Lösche die Container-Instance.
  2. Starte eine neue Container-Instance mit dem neuen Instance-Typ.
    Hinweis: Es hat sich bewährt, ein für Amazon ECS optimiertes Amazon-Linux-2-AMI zu verwenden, um die Instance für den Cluster zu starten.

Oder erstelle eine neue Startkonfiguration und aktualisiere dann die Startkonfiguration in der Auto-Scaling-Gruppe.

Weitere Informationen findest du unter Wie ändere ich meinen Container-Instance-Typ in Amazon ECS?

Error: Unable to register as a container instance with ECS: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster . status code: 400, request id: 0a123456-7899-10101-a987-6543210deff

-oder-

Error: 2019-06-29T16:10:09Z [ERROR] Error re-registering: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400, request id: 0a123456-7899-10101-a987-123456pqrs

Diese Fehler treten auf, wenn dir die erforderlichen IAM-Berechtigungen fehlen. Erstelle eine Container-Instance-IAM-Rolle, um diese Fehler zu beheben. Führe dann das Runbook AWSSupport-TroubleshootECSContainerInstance aus, um die Berechtigungen zu identifizieren, die in der Container-Instance-Rolle fehlen.

Ähnliche Informationen

Warum sind meine Amazon-ECS-Container-Instances mit Amazon-Linux-1-AMIs nicht verbunden?

Problembehandlung bei Amazon ECS

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat