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

Lesedauer: 4 Minute
0

Meine Container-Instances für Amazon Elastic Container Service (Amazon ECS) sind nicht verbunden.

Kurzbeschreibung

Ihr Amazon ECS-Container-Agent stellt möglicherweise mehrmals pro Stunde eine Verbindung her und erneut eine Verbindung her. Diese Veränderungsereignisse sind normal und geben keinen Anlass zur Sorge.

Wenn Ihr Container-Agent jedoch in einem getrennten Zustand verbleibt, kann die Container-Instance nicht als Teil Ihres ECS-Clusters betrieben werden. Ihr Agent wird getrennt, wenn AgentConnected falsch zurückgibt. Das Problem kann folgende Ursachen haben:

  • Netzwerkprobleme verhindern die Kommunikation zwischen der Instanz und Amazon ECS.
  • Der Container-Agent verfügt nicht über die erforderlichen AWS Identity and Access Management (IAM)-Berechtigungen für die Kommunikation mit Amazon ECS-Endpunkten.
  • Es gibt Probleme mit dem Host- oder Docker-Service innerhalb der Container-Instance.

Gehen Sie wie folgt vor, um die Ursache der Verbindungsunterbrechung zu ermitteln.

Lösung

**Hinweis:**Die folgende Lösung gilt für Amazon ECS-optimierte Amazon Linux 1-AMIs. Eine Lösung, die für Amazon ECS-optimierte Amazon Linux 2-AMIs gilt, finden Sie unter Wie behebe ich Probleme mit einem getrennten Amazon ECS-Agenten?

Stellen Sie sicher, dass der Docker-Service auf der Container-Instance ausgeführt wird

1.Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Docker-Service auf der betroffenen Container-Instance ausgeführt wird:

sudo service docker status

Die Befehlsausgabe ähnelt der folgenden:

docker (pid 23013) is running...

Wenn der Docker-Service nicht läuft oder Sie den Dienst neu starten müssen, führen Sie den folgenden Befehl aus:

sudo service docker restart

**Hinweis:**Geben Sie diesen Befehl nicht ein, während der Service bereits läuft. Stellen Sie zunächst sicher, dass die Container-Instance in den Zustand Leeren versetzt wird. Starten Sie dann den Docker-Service für bestehende Aufgaben neu, die auf einer anderen Container-Instance geplant werden sollen.

Die Befehlsausgabe muss die folgenden Zeilen enthalten:

Stopping docker: [  OK  ]
Starting docker: [  OK  ]

**Hinweis:**Um zu überprüfen, ob der Docker-Service nach dem Neustart-Befehl ausgeführt wird, führen Sie den Befehl sudo service docker status aus.

2.Führen Sie den folgenden Befehl aus, um den ECS-Agenten zu starten:

sudo start ecs

Stellen Sie sicher, dass der Container-Agent auf der Container-Instance ausgeführt wird

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Container-Agent auf der betroffenen Container-Instance ausgeführt wird:

sudo status ecs

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

sudo start ecs

Die Befehlsausgabe ähnelt der folgenden:

ecs start/running, process 23403

Überprüfen Sie die Protokolldateien für den Container-Agenten und Docker

Wenn Ihre Container-Instances immer noch nicht verbunden sind, überprüfen Sie die Protokolldateien auf dem Container-Host für den Container-Agenten und Docker.

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

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

**Hinweis:**Führen Sie den Amazon ECS Logs Collector aus, um Protokollinformationen von der Container-Instance zu sammeln.

Stellen Sie sicher, dass das IAM-Instanzprofil über die erforderlichen Berechtigungen verfügt

Wenn der Container-Agent immer noch nicht verbunden ist, stellen Sie sicher, dass das mit der Container-Instance verknüpfte IAM-Instanzprofil über die erforderlichen IAM-Berechtigungen verfügt.

1.Stellen Sie mithilfe von SSH eine Verbindung zur Instanz her.

2.Führen Sie den folgenden Befehl aus, um die Instanzmetadaten im Instanzprofil anzuzeigen, das der Instanz zugeordnet ist:

curl http://169.254.169.254/latest/meta-data/iam/info

Die Befehlsausgabe ähnelt der folgenden:

{
  "Code" : "Success",
  "LastUpdated" : "2019-06-29T15:47:03Z",
  "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole",
  "InstanceProfileId" : "AIPAJ5WF3LZVY7PLUHV72"
}

3.Stellen Sie sicher, dass die IAM-Rolle die richtigen Berechtigungen für Ihre Container-Instances enthält.

4.Um bestimmte Fehler bei den Anmeldeinformationen mit dem Container-Agenten zu überprüfen, führen Sie den folgenden Befehl aus, um im Container-Agent-Protokoll nach einer Liste von ECS-Protokollen zu suchen:

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

**Hinweis:**Das Container-Agent-Protokoll wird stündlich rotiert, und das Suffix ändert sich automatisch, um das aktuelle Datum und die aktuelle Uhrzeit widerzuspiegeln. Aktualisieren Sie den Befehl, sodass er den Datumsbereich und die Protokoll-ID enthält, wann das Problem aufgetreten ist.

Wenn der Container-Agent nicht über die erforderlichen Anmeldeinformationen verfügt, erhalten Sie in den Protokollen eine Fehlermeldung ähnlich der folgenden:

2019-06-29T16:10:09Z [ERROR] Unable to register as a container instance with ECS: 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: 0b73e260-5088-4688-a425-6f35f1ef440f
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: 0b73e260-5088-4688-a425-6f35f1ef440f

Zusätzliche Hilfe

Wenn Sie das Problem mit Ihrer ECS-Container-Instance anhand dieser Lösung nicht identifizieren können, wenden Sie sich an den Premium Support, um Hilfe zu erhalten. Verwenden Sie zunächst den Amazon ECS Logs Collector, um ein Archiv der Protokolle Ihrer Instanz zu erstellen. Hängen Sie die Protokolle dann an ein Support-Ticket an, um dem Support-Techniker bei der Behebung des Problems zu helfen.


Ähnliche Informationen

Amazon ECS-Fehlerbehebung

Amazon ECS-Container-Agent

IAM-Rolle der Amazon ECS-Container-Instance

Speicherorte der Amazon ECS-Protokolldateien

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren