¿Por qué están desconectadas mis instancias de contenedor de Amazon ECS con AMI de Amazon Linux 1?

5 minutos de lectura
0

Mis instancias de contenedor para Amazon Elastic Container Service (Amazon ECS) están desconectadas.

Breve descripción

Es posible que su agente de contenedor de Amazon ECS se conecte y vuelva a conectarse varias veces por hora. Estos eventos de cambio son normales y no son motivo de preocupación.

Sin embargo, si su agente de contenedor permanece desconectado, la instancia de contenedor no podrá funcionar como parte de su clúster de ECS. El agente se desconecta cuando agentConnected devuelve false. El problema puede deberse a lo siguiente:

  • Hay problemas de red que impiden la comunicación entre la instancia y Amazon ECS.
  • El agente de contenedor no tiene los permisos necesarios de AWS Identity and Access Management (IAM) para comunicarse con los puntos de conexión de Amazon ECS.
  • Hay problemas con el host o el servicio de Docker dentro de la instancia de contenedor.

Para identificar la causa de la desconexión, siga estos pasos.

Solución

Nota: La siguiente solución es aplicable a las AMI de Amazon Linux 1 optimizadas para Amazon ECS. Para obtener una solución aplicable a las AMI de Amazon Linux 2 optimizadas para Amazon ECS, consulte ¿Cómo puedo solucionar los problemas de desconexión de un agente de Amazon ECS?

Comprobación de si el servicio de Docker se esté ejecutando en la instancia de contenedor

1.    Para comprobar que el servicio de Docker se esté ejecutando en la instancia de contenedor afectada, ejecute el siguiente comando:

sudo service docker status

El resultado del comando es similar al siguiente:

docker (pid 23013) is running...

Si el servicio de Docker no se está ejecutando o si hay que reiniciarlo, ejecute el siguiente comando:

sudo service docker restart

Nota: No introduzca este comando mientras el servicio esté en ejecución. Primero, asegúrese de definir el estado vaciada para la instancia de contenedor. A continuación, reinicie el servicio de Docker para programar las tareas existentes en otra instancia de contenedor.

El resultado del comando debe incluir las siguientes líneas:

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

Nota: Para comprobar si el servicio de Docker se está ejecutando después del comando restart, ejecute el comando sudo service docker status.

2.    Para iniciar el agente de ECS, ejecute el siguiente comando:

sudo start ecs

Comprobación de si el agente de contenedor se está ejecutando en la instancia de contenedor

Para comprobar si el agente de contenedor se está ejecutando en la instancia de contenedor afectada, ejecute el siguiente comando:

sudo status ecs

Si el agente de contenedor no se está ejecutando en la instancia de contenedor, ejecute el siguiente comando para iniciarlo:

sudo start ecs

El resultado del comando es similar al siguiente:

ecs start/running, process 23403

Revisión de los archivos de registro del agente de contenedor y Docker

Si las instancias de contenedor siguen desconectadas, revise los archivos de registro del host del contenedor del agente de contenedor y Docker.

Para generar los archivos de registro del agente de contenedor y Docker, ejecute los siguientes comandos:

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

Nota: Para recopilar información de registro de la instancia de contenedor, ejecute el recopilador de registros de Amazon ECS.

Comprobación de si el perfil de instancia de IAM tiene los permisos necesarios

Si el agente de contenedor sigue desconectado, compruebe que el perfil de instancia de IAM asociado a la instancia de contenedor tenga los permisos de IAM necesarios.

1.    Conéctese a la instancia mediante SSH.

2.    Para ver los metadatos de la instancia en el perfil de instancia asociado a ella, ejecute el siguiente comando:

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

El resultado del comando es similar al siguiente:

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

3.    Compruebe que el rol de IAM contenga los permisos correctos para las instancias de contenedor.

4.    Para comprobar errores de credenciales específicos con el agente de contenedor, ejecute el siguiente comando para ver una lista de los registros de ECS en el registro del agente de contenedor:

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

Nota: El registro del agente de contenedor rota cada hora y el sufijo cambia automáticamente para reflejar la fecha y hora actuales. Actualice el comando para incluir el intervalo de fechas y el identificador de registro de cuando se produjo el problema.

Si el agente de contenedor no tiene las credenciales necesarias, en los registros se mostrará un error parecido al siguiente:

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

Ayuda adicional

Si no puede identificar el problema con la instancia de contenedor de ECS mediante esta solución, póngase en contacto con Premium Support para obtener ayuda. En primer lugar, utilice el recopilador de registros de Amazon ECS para crear un archivo con los registros de la instancia. A continuación, adjunte los registros al ticket para ayudar al ingeniero de soporte a solucionar el problema.


Información relacionada

Solución de problemas de Amazon ECS

Agente de contenedor de Amazon ECS

Rol de IAM de instancia de contenedor de Amazon ECS

Ubicaciones de archivos de registro de Amazon ECS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años