Perché le mie istanze container Amazon ECS con Amazon Linux 1 AMI sono scollegate?
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
Contenuto pertinente
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 4 anni fa