Perché le mie istanze container Amazon ECS con Amazon Linux 1 AMI sono scollegate?

5 minuti di lettura
0

Le mie istanze di container per Amazon Elastic Container Service (Amazon ECS) sono scollegate.

Breve descrizione

Il tuo agente container Amazon ECS potrebbe connettersi e riconnettersi più volte all'ora. Questi eventi di cambiamento sono normali e non sono motivo di preoccupazione.

Tuttavia, se l'agente container rimane in uno stato disconnesso, l'istanza del contenitore non può funzionare come parte del cluster ECS. Il tuo agente viene disconnesso quando agentConnected restituisce false. Il problema può essere causato da quanto segue:

  • I problemi di rete impediscono la comunicazione tra l'istanza e Amazon ECS.
  • L'agente container non dispone delle autorizzazioni AWS Identity and Access Management (IAM) necessarie per comunicare con gli endpoint Amazon ECS.
  • Ci sono problemi con l'host o il servizio Docker all'interno dell'istanza del contenitore.

Per identificare la causa della disconnessione, completare i seguenti passaggi.

Risoluzione

Nota: La seguente risoluzione si applica alle AMI Amazon Linux 1 ottimizzate per Amazon ECS. Per una risoluzione applicabile alle AMI Amazon Linux 2 ottimizzate per Amazon ECS, vedi Come posso risolvere i problemi di un agente Amazon ECS disconnesso?

Verifica che il servizio Docker sia in esecuzione sull'istanza del contenitore

1.    Per verificare che il servizio Docker sia in esecuzione sull'istanza del contenitore interessata, esegui il seguente comando:

sudo service docker status

L'output del comando è simile al seguente:

docker (pid 23013) is running...

Se il servizio Docker non è in esecuzione o se devi riavviare il servizio, esegui il seguente comando:

sudo service docker restart

Nota: Non immettere questo comando mentre il servizio è già in esecuzione. Innanzitutto, assicurati di impostare l'istanza del contenitore sullo stato di svuotamento. Quindi, riavvia il servizio Docker per pianificare le attività esistenti su un'altra istanza del contenitore.

L'output del comando deve includere le seguenti righe:

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

Nota: Per verificare che il servizio Docker sia in esecuzione dopo il comando restart, esegui il comando sudo service docker status.

2.    Per avviare l'agente ECS, esegui il seguente comando:

sudo start ecs

Verifica che l'agente container sia in esecuzione sull'istanza del container

Per verificare che l'agente container sia in esecuzione sull'istanza del container interessata, esegui il comando seguente:

sudo status ecs

Se l'agente container non è in esecuzione sulla tua istanza del container, esegui il seguente comando per avviare l'agente:

sudo start ecs

L'output del comando è simile al seguente:

ecs start/running, process 23403

Esamina i file di log per l'agente container e Docker

Se le istanze del container sono ancora disconnesse, controlla i file di registro sull'host del container per l'agente container e Docker.

Per generare i file di log per l'agente container e Docker, esegui i seguenti comandi:

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

Nota: Per raccogliere informazioni di log dall'istanza del container, esegui Amazon ECS logs Collector.

Verifica che il profilo dell'istanza IAM disponga delle autorizzazioni necessarie

Se l'agente container è ancora disconnesso, verifica che il profilo dell'istanza IAM associato all'istanza del container disponga delle autorizzazioni IAM necessarie.

1.    Connettiti all'istanza tramite SSH.

2.    Per visualizzare i metadati dell'istanza sul profilo dell'istanza associato all'istanza, esegui il comando seguente:

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

L'output del comando è simile al seguente:

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

3.    Verifica che il ruolo IAM contenga le autorizzazioni corrette per le tue istanze di container.

4.    Per verificare errori di credenziali specifici con l'agente container, esegui il seguente comando per controllare il log dell'agente container per un elenco di log ECS:

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

Nota: Il log dell'agente container viene ruotato ogni ora e il suffisso cambia automaticamente in base alla data e all'ora correnti. Aggiorna il comando per includere l'intervallo di date e l'ID di log relativi al momento in cui si è verificato il problema.

Se l'agente container non dispone delle credenziali necessarie, nei log viene visualizzato un errore simile al seguente:

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

Aiuto aggiuntivo

Se non riesci a identificare il problema con l'istanza del container ECS grazie a questa risoluzione, contatta l'assistenza Premium per ricevere assistenza. Innanzitutto, utilizza Amazon ECS logs Collector per creare un archivio dei log della tua istanza. Quindi, allega i log a un ticket di supporto per aiutare il tecnico dell'assistenza a risolvere il problema.


Informazioni correlate

Risoluzione dei problemi di Amazon ECS

Agente container di Amazon ECS

Ruolo IAM dell'istanza del container Amazon ECS

Posizioni dei file di log Amazon ECS

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa