Warum kann meine Amazon-ECS- oder Amazon-EC2-Instance dem Cluster nicht beitreten?
Letzte Aktualisierung: 05.05.2022
Ich kann meine Instance aus der Amazon Elastic Compute Cloud (Amazon EC2) nicht bei einem Cluster des Amazon Elastic Container Service (Amazon ECS) anmelden.
Kurzbeschreibung
Ihre Amazon-EC2-Instance kann sich aus einem oder mehreren der folgenden Gründe nicht bei einem ECS-Cluster anmelden oder einem ECS-Cluster beitreten:
- Der ECS-Endpunkt kann nicht öffentlich auf den DNS-Hostnamen der Instance zugreifen.
- Ihre öffentlichen Subnetzkonfigurationen sind falsch.
- Ihre privaten Subnetzkonfigurationen sind falsch.
- Ihre VPC-Endpunkte sind falsch konfiguriert.
- Ihre Sicherheitsgruppen erlauben keinen Netzwerkverkehr.
- Die EC2-Instance verfügt nicht über die erforderlichen Berechtigungen im AWS Identity and Access Management (IAM). Oder der API-Aufruf ecs:RegisterContainerInstance wird verweigert.
- Die Instance-Benutzerdaten für Ihren ECS-Container sind nicht richtig konfiguriert.
- Der ECS-Agent wurde angehalten 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 für Ihre Instance verwendete Amazon Machine Image (AMI) erfüllt die Voraussetzungen nicht.
Lösung
Wichtig: Verwenden Sie das AWS-Systems-Manager-Runbook AWSSupport-TroubleshootECSContainerInstance, um häufig auftretende Probleme zu beheben, die im vorherigen Abschnitt aufgeführt sind. Wenn die Ausgabe des Runbooks keine Empfehlungen enthält, gehen Sie nach den in den folgenden Abschnitten erläuterten Methoden zur manuellen Problembehandlung vor.
Verwendung des Systems-Manager-Automation-Runbook
Mit dem Runbook AWSSupport-TroubleshootECSContainerInstance können Sie Fehler der EC2-Instance beheben, die sich nicht beim ECS-Cluster anmelden kann. Diese Automatisierung überprüft Folgendes:
- Enthalten die Benutzerdaten für die Instance die richtigen Cluster-Informationen?
- Enthält das Instance-Profil die erforderlichen Berechtigungen?
- Gibt es Probleme mit der Netzwerkkonfiguration?
Wichtig: Verwenden Sie das Runbook AWSSupport-TroubleshootECSContainerInstance in derselben AWS-Region, in der sich Ihr ECS-Cluster und Ihre EC2-Instance befinden.
- Öffnen Sie die AWS-Systems-Manager-Konsole.
- Wählen Sie im Navigationsbereich unter Change Management die Option Automation (Automatisierung) aus.
- Wählen Sie Execute automation (Automatisierung ausführen).
- Wählen Sie die Registerkarte Owned by Amazon (Im Besitz von Amazon).
- Suchen Sie unter Automation document (Automatisierungsdokument) nach TroubleshootECSContainerInstance.
- Wählen Sie die Karte AWSSupport-TroubleshootECSContainerInstance aus.
Hinweis: Stellen Sie sicher, dass Sie das Optionsfeld und nicht den verlinkten Namen der Automatisierung auswählen. - Wählen Sie Weiter.
- Stellen Sie für Execution automation document (Dokument zur Ausführungsautomatisierung) sicher, dass Simple execution (Einfache Ausführung) ausgewählt ist.
- Geben Sie im Abschnitt Input parameters (Eingabeparameter) für AutomationAssumeRole den Amazon-Ressourcennamen (ARN) der Rolle ein, die Systems Manager Automation erlaubt, Aktionen auszuführen.
Hinweis: Wenn Sie keine IAM-Rolle angeben, verwendet Systems Manager Automation die Berechtigungen der IAM-Benutzerrolle, die das Runbook ausführt. Weitere Informationen zum Erstellen der zu übernehmenden Rolle für Systems Manager Automation finden Sie unter Aufgabe 1: Erstellen einer Servicerolle für Automatisierung.
Wichtig: Stellen Sie sicher, dass entweder die AutomationAssumeRole oder der IAM-Benutzer/die IAM-Rolle über Berechtigungen für die folgenden Aktionen 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. - Geben Sie für ClusterName den Clusternamen ein, bei dem sich die EC2-Instance nicht anmelden konnte.
- Geben Sie für InstanceId die EC2-Instance-ID ein, die sich nicht anmelden konnte.
- Wählen Sie Execute (Ausführen).
Die Ausgabe des Runbooks enthält Schritte zur Fehlerbehebung und Empfehlungen zur Behebung des Problems, das dazu führte, dass sich Ihre EC2-Instance nicht im Cluster anmelden konnte.
Überprüfen Sie den Status des Amazon-ECS-Agenten auf der Amazon-Linux-2-Instance
Prüfen Sie, ob der ECS-Agent auf der Instance ausgeführt wird, indem Sie den folgenden Befehl ausführen:
sudo status ecs
Wenn der Container-Agent nicht auf Ihrer Container-Instance ausgeführt wird, führen Sie den folgenden Befehl aus, um den Agenten zu starten:
sudo start ecs
ecs start/running, process 23403
Startkonfigurationen überprüfen
Wenn Ihre Instance als Teil einer Auto-Scaling-Gruppe gelauncht wird, stellen Sie sicher, dass die Startkonfiguration der Auto-Scaling-Gruppe korrekt ist. Weitere Informationen finden Sie in Schritt 5 in Aktualisieren eines Container-Instance-Clusters von Amazon ECS mit einem neuen AMI.
Prüfen Sie das AMI Ihrer Instance
Wenn das für die EC2-Instance verwendete AMI ein kopiertes AMI oder ein benutzerdefiniertes AMI ist, müssen Sie sicherstellen, dass die Instance über die folgenden Komponenten verfügt:
- Eine moderne Linux-Verteilung, auf der mindestens Version 3.10 des Linux-Kernels ausgeführt wird.
- Aktuelle Version des Amazon-ECS-Container-Agenten.
- Ein Docker-Daemon, der mindestens Version 1.9.0 ausführt, und alle Docker-Laufzeit-Abhängigkeiten. Um die aktuelle Docker-Version anzuzeigen, führen Sie den Befehl sudo docker version aus. Informationen zum Installieren der neuesten Docker-Version auf Ihrer Linux-Verteilung finden Sie in der Docker-Dokumentation zur Installation der Docker-Engine.
Die Amazon-ECS-optimierten AMIs sind mit diesen Anforderungen vorkonfiguriert. Daher ist es eine bewährte Methode, sie für Ihre Container-Instances zu verwenden, sofern Ihre Anwendung kein bestimmtes Betriebssystem oder eine Docker-Version benötigt, die in diesem AMI noch nicht verfügbar ist.
Überprüfen Sie die Protokolle
Wenn das Problem weiterhin besteht, sammeln Sie die Protokolle mit dem ECS Logs Collector und überprüfen Sie dann die Protokolle, um die Ursache zu ermitteln. Sie können auch Protokolldateien auf dem Container-Host für den Container-Agenten 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
Häufige Fehler
Fehler: Launchen einer neuen EC2-Instance. Statusgrund: Dieses Konto ist derzeit gesperrt und nicht als gültiges Konto anerkannt. Bitte wenden Sie sich bei Fragen an aws-verification@amazon.com. Das Launchen der EC2-Instance ist fehlgeschlagen.
Wenden Sie sich wie im Statusgrund angegeben an aws-verification@amazon.com und geben Sie an, dass Sie Ihr Konto entsperren müssen.
Fehler: re-registering (erneutes Anmelden): ClientException: Container instance 12345678910xxxxxxxxxxxx is inactive.\n\tstatus code: 400, request id: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go
Sie erhalten diesen Fehler, wenn der ECS-Agent die EC2-Container-Instance nicht beim ECS-Cluster anmelden kann, da 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-Agenten.
Fehler: Einige Instances können dem Cluster beitreten, aber mit denselben Konfigurationen können andere Instances dem Cluster nicht beitreten.
Dieser Fehler kann durch ThrottlingException verursacht werden, die sich ergibt, wenn das Ratenlimit für einen bestimmten API-Aufruf überschritten wird. Um diesen Fehler zu beheben, erhöhen Sie das Ratenlimit auf Kontoebene. Achten Sie darauf, nach APIs wie RegisterTargets und RegisterContainerInstance zu suchen.
Fehler: Nach dem Ändern des Instance-Typs können neue Instances dem Cluster nicht beitreten.
Dieser Fehler wird verursacht, wenn der ECS-Agent im Status „ausstehend“ feststeckt und den Instance-Typ nicht ändern kann. Im Gegensatz zu anderen EC2-Instances können Sie die ECS-Instance nicht anhalten, den Instance-Typ ändern und sie dann erneut starten. Um den Instance-Typ in ECS zu ändern, müssen Sie die Container-Instance beenden und dann eine neue Container-Instance mit der gewünschten Instance-Größe unter Verwendung des neuesten Amazon-ECS-optimierten Amazon-Linux-2-AMI für Ihren gewünschten Cluster launchen. Sie können auch eine neue Startkonfiguration erstellen und diese Startkonfiguration dann in der Auto-Scaling-Gruppe aktualisieren.
Fehler: Unable to register as a container instance with ECS (Anmelden als Container-Instance bei ECS nicht möglich): 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
2019-06-29T16:10:09Z [ERROR] Error re-registering (Fehler beim erneuten Anmelden): 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 werden durch fehlende IAM-Berechtigungen verursacht. Um diese Fehler zu beheben, lesen Sie die Anweisungen im Abschnitt Überprüfen der IAM-Rolle und der der Instance zugeordente Richtlinien.
Zugehörige Informationen
War dieser Artikel hilfreich?
Benötigen Sie Hilfe zur Fakturierung oder technischen Support?