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

Lesedauer: 6 Minute
0

Ich kann meine Amazon-Elastic-Compute-Cloud-(Amazon EC2)-Instance nicht bei einem Amazon-Elastic-Container-Service-(Amazon ECS)-Cluster registrieren.

Kurzbeschreibung

Ihre Amazon-EC2-Instance kann sich aus einem oder mehreren der folgenden Gründe nicht bei einem Amazon-ECS-Cluster registrieren oder einem Amazon-ECS-Cluster beitreten:

  • Der ECS-Endpunkt kann nicht öffentlich auf den Domain-Name-System-(DNS)-Hostnamen der Instance zugreifen.
  • Ihre öffentlichen Subnetzkonfigurationen sind fehlerhaft.
  • Ihre privaten Subnetzkonfigurationen sind fehlerhaft.
  • Ihre VPC-Endpunkte sind falsch konfiguriert.
  • Ihre Sicherheitsgruppen lassen keinen Netzwerkverkehr zu.
  • Die EC2-Instance verfügt nicht über die erforderlichen AWS-Identity-and-Access-Management-(IAM)-Berechtigungen. Oder der API-Aufruf ecs:RegisterContainerInstance wird abgelehnt.
  • Die Instance-Benutzerdaten für Ihren ECS-Container sind falsch konfiguriert.
  • Der ECS-Agent ist gestoppt oder läuft nicht auf der Instance.
  • Die Startkonfiguration der Auto-Scaling-Gruppe ist nicht korrekt (wenn Ihre Instance Teil einer Auto-Scaling-Gruppe ist).
  • Das Amazon Machine Image (AMI), das Sie für Ihre Instance verwenden, erfüllt die Voraussetzungen nicht.

Lösung

Verwenden Sie das AWSSupport-TroubleshootECSContainerInstance-Runbook des AWS Systems Managers, um die häufigsten Probleme zu beheben, die im Abschnitt Kurzbeschreibung aufgeführt sind. Wenn die Ausgabe des Runbooks keine Empfehlungen enthält, verwenden Sie die manuellen Lösungsansätze in den folgenden Lösungs-Abschnitten.

Das Systems-Manager-Automation-Runbook verwenden

Verwenden Sie das AWSSupport-TroubleshootECSContainerInstance-Runbook, um Probleme mit der EC2-Instance zu beheben, die sich nicht beim ECS-Cluster registrieren kann. Diese Automatisierung sucht nach potenziellen Problemen mit den folgenden Ressourcen:

  • Die Benutzerdaten für die Instance enthalten die richtigen Clusterinformationen.
  • Das Instance-Profil enthält die erforderlichen Berechtigungen.
  • Das Netzwerk ist korrekt konfiguriert

Hinweis: Verwenden Sie das AWSSupport-TroubleshootECSContainerInstance-Runbook in derselben AWS-Region, in der sich Ihr ECS-Cluster und Ihre EC2-Instance befinden.

  1. Öffnen Sie die AWS-Systems-Manager-Konsole.
  2. Wählen Sie im Navigationsbereich unter Änderungsmanagement die Option Automatisierung aus.
  3. Wählen Sie Automatisierung ausführen aus.
  4. Wählen Sie die Registerkarte Im Besitz von Amazon aus.
  5. Suchen Sie unter Automatisierungsdokument nach TroubleshootECSContainerInstance.
  6. Wählen Sie die Karte AWSSupport-TroubleshootECSContainerInstance aus.
    Hinweis: Wählen Sie das Optionsfeld und nicht den mit einem Hyperlink versehenen Automatisierungsnamen aus.
  7. Wählen Sie Weiter aus.
  8. Wählen Sie für Ausführung des Automatisierungsdokuments die Option Einfache Ausführung aus.
  9. Geben Sie im Bereich Eingabeparameter für AutomationAssumeRole den Amazon-Ressourcennamen (ARN) der Rolle ein, die es Systems Manager Automation ermöglicht, Aktionen auszuführen.
    Hinweis: Wenn Sie keine IAM-Rolle angeben, verwendet Systems Manager Automation die Berechtigungen des IAM-Benutzers oder der IAM-Rolle, die das Runbook ausführt. Weitere Informationen zum Erstellen der zu Übernahme-Rolle für Systems Manager Automation finden Sie unter Methode 2: IAM verwenden, um Rollen für die Automatisierung zu konfigurieren. Stellen Sie sicher, dass die AutomationAssumeRole oder die IAM-Rolle über die folgenden Berechtigungen verfügen: ec2:DescribeIamInstanceProfileAssociations, ec2:DescribeInstanceAttribute, ec2:DescribeInstances, ec2:DescribeNetworkAcls, ec2:DescribeRouteTables, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcs, ec2:DescribeVpcEndpoints, iam:GetInstanceProfile, iam:GetRole, iam:SimulateCustomPolicy und iam:SimulatePrincipalPolicy.
  10. Geben Sie für ClusterName den Clusternamen ein, bei dem sich die EC2-Instance nicht registrieren konnte.
  11. Geben Sie für InstanceId die EC2-Instance-ID ein, die nicht registriert werden konnte.
  12. Wählen Sie Ausführen aus.

Die Ausgabe des Runbooks enthält Schritte und Empfehlungen zur Fehlerbehebung.

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

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Amazon-ECS-Container-Agent auf der Instance läuft:

sudo systemctl status ecs

Wenn der Container-Agent nicht auf Ihrer Instance läuft, führen Sie den folgenden Befehl aus, um den Agent zu starten:

sudo systemctl start ecs

Die Ausgabe der Befehlsausgabe muss wie folgt aussehen:

ecs start/running, process 23403

Die Startkonfigurationen überprüfen

Wenn die Instance, die Sie starten, Teil einer Auto-Scaling-Gruppe ist, überprüfen Sie, ob die Startkonfiguration der Auto-Scaling-Gruppe korrekt ist. Weitere Informationen finden Sie in Schritt 5 unter Aktualisieren eines Amazon-ECS-Container-Instance-Clusters mit einem neuen AMI.

Das AMI Ihrer Instance überprüfen

Wenn das AMI, das Sie für die EC2-Instance verwenden, ein kopiertes oder benutzerdefiniertes AMI ist, stellen Sie sicher, dass die Instance über die folgenden Komponenten verfügt:

  • Eine moderne Linux-Distribution, auf der mindestens Version 3.10 des Linux-Kernels ausgeführt wird.
  • Aktuelle Version des Amazon-ECS-Linux-Container-Agents.
  • Ein Docker-Daemon, der mindestens Version 1.9.0 und alle Docker-Laufzeitabhängigkeiten ausführt (von der Docker-Website). Um die aktuelle Docker-Version anzuzeigen, führen Sie den Befehl sudo docker version aus. Informationen zur Installation der neuesten Docker-Version auf Ihrer speziellen Linux-Distribution finden Sie in der Docker-Dokumentation zur Installation der Docker-Engine auf der Docker-Website.

Die für Amazon ECS optimierten AMIs sind mit diesen Anforderungen vorkonfiguriert. Es ist eine bewährte Methode, für Amazon ECS optimierte AMIs zu verwenden, es sei denn, Ihre Anwendung erfordert eine Version, die in diesem AMI noch nicht verfügbar ist.

Die Protokolldateien überprüfen

Wenn das Problem weiterhin besteht, verwenden Sie den Amazon-ECS-Protokoll-Collector, um die Protokolle zu sammeln, und überprüfen Sie anschließend die Protokolle, um die Ursache zu identifizieren. Sie können zudem die Protokolldateien auf dem Container-Host für den Container-Agent und Docker überprüfen.

Führen Sie die folgenden Befehle aus, um die Protokolldateien für den Container-Agent und Docker anzuzeigen:

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

Behebung häufiger Fehler

Fehler: Starten einer neuen EC2-Instance. Grund für den Zustand: Dieses Konto ist derzeit gesperrt und nicht als gültiges Konto anerkannt. Bitte wenden Sie sich bei Fragen an aws-verification@amazon.com. Das Starten der EC2-Instance ist fehlgeschlagen.

Wenden Sie sich an aws-verification@amazon.com. Erwähnen Sie unbedingt, dass Sie Ihr Konto entsperren müssen.

Fehler: Neuregistrierung: ClientException: Die Container-Instance 12345678910xxxxxxxxxxxx ist inaktiv.\n\tStatuscode: 400, Anfrage-ID: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Sie erhalten diesen Fehler, wenn der ECS-Agent die EC2-Container-Instance nicht im ECS-Cluster registrieren kann, weil die EC2-Instance jetzt inaktiv ist. Dieser Fehler hängt mit der Anwendung zusammen, die auf der Instance ausgeführt wird. Um die Ursache des Fehlers zu verstehen, überprüfen Sie die Anwendung. Wenn der Fehler weiterhin besteht, überprüfen Sie die Protokolle des ECS-Agents.

Fehler: Einige Instances können dem Cluster beitreten, andere Instances mit denselben Konfigurationen können dem Cluster jedoch nicht beitreten.

Dieser Fehler kann aufgrund einer ThrottlingException auftreten, die entsteht, wenn ein bestimmter API-Aufruf das Ratenlimit überschreitet. Um diesen Fehler zu beheben, erhöhen Sie das Ratenlimit auf Kontoebene. Suchen Sie nach APIs wie RegisterTargets und RegisterContainerInstance.

Fehler: Nach der Änderung des Instance-Typs können neue Instances dem Cluster nicht beitreten.

Dieser Fehler tritt auf, wenn der ECS-Agent im Status Pending feststeckt und den Instance-Typ nicht ändern kann. Im Gegensatz zu einigen EC2-Instances können Sie die ECS-Instance nicht beenden, den Instance-Typ ändern und sie dann erneut starten. Gehen Sie wie folgt vor, um den Instance-Typ in Amazon ECS zu ändern:

  1. Beenden Sie die Container-Instance.
  2. Starten Sie eine neue Container-Instance mit der neuen Instance-Größe. Es hat sich bewährt, die Instance mit dem für Amazon ECS optimierten Amazon-Linux-2-AMI für Ihren Cluster zu starten.

Sie können auch eine neue Startkonfiguration erstellen. Aktualisieren Sie dann die Startkonfiguration in der Auto-Scaling-Gruppe.

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

Fehler: Registrierung als Container-Instance bei ECS nicht möglich: AccessDeniedException: Benutzer: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def ist nicht berechtigt, den folgenden Befehl auszuführen: ecs:RegisterContainerInstance für die Ressource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster . Statuscode: 400, Anfrage-ID: 0a123456-7899-10101-a987-6543210deff

-oder-
Fehler: 2019-06-29T16:10:09Z [ERROR] Fehler bei der erneuten Registrierung: AccessDeniedException: Benutzer: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef ist nicht berechtigt, den folgenden Befehl auszuführen: ecs:RegisterContainerInstance für die Ressource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster Statuscode: 400, Anfrage-ID: 0a123456-7899-10101-a987-123456pqrs

Diese Fehler treten aufgrund fehlender IAM-Berechtigungen auf. Um diese Fehler zu beheben, lesen Sie die Anweisungen in der IAM-Rolle der Amazon-ECS-Container-Instance.

Führen Sie außerdem das AWSSupport-TroubleshootECSContainerInstance-Runbook aus, um zu sehen, welche Berechtigungen in der Container-Instance-Rolle fehlen.

Ähnliche Informationen

Eine Virtual Private Cloud erstellen

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

Amazon-ECS-Fehlerbehebung

Ihre eigenen Runbooks erstellen