Instancias de contenedor de EC2 de Amazon ECS
El agente de Amazon ECS es un proceso que se ejecuta en todas las instancias de contenedor que estén registradas en el clúster. Facilita la comunicación entre sus instancias de contenedor y Amazon ECS.
nota
En las instancias de contenedores de Linux, el contenedor de agente monta directorios de nivel superior como /lib
, /lib64
y /proc
. Esto es necesario para las características y funcionalidades de ECS, como los volúmenes de Amazon EBS, el modo de red awsvpc
, Amazon ECS Service Connect y FireLens para Amazon ECS.
Cada versión del agente de contenedor de Amazon ECS admite un conjunto de características diferente y proporciona correcciones de errores de versiones anteriores. Cuando sea posible, siempre recomendamos utilizar la versión más reciente del agente de contenedor de Amazon ECS. Para actualizar el agente de contenedor a la versión más reciente, consulte Actualización del agente de contenedor de Amazon ECS.
El agente de contenedor de Amazon ECS contiene la imagen amazon-ecs-pause
. Amazon ECS utiliza esta imagen para las tareas que utilizan el modo de red awsvpc
.
Para ver las características y mejoras incluidas en cada versión del agente, consulte https://github.com/aws/amazon-ecs-agent/releases
importante
La versión mínima de Docker para obtener métricas fiables es la versión de Docker v20.10.13
y versiones posteriores, que se incluyen en la AMI 20220607
optimizada para Amazon ECS y versiones posteriores.
Los agentes de Amazon ECS versión 1.20.0
y posteriores ya no admiten versiones de Docker anteriores a la 18.01.0
.
Ciclo de vida
Cuando el agente de contenedor de Amazon ECS registra una instancia de Amazon EC2 en el clúster, la instancia de Amazon EC2 notifica su estado como ACTIVE
y su estado de conexión del agente como TRUE
. Esta instancia de contenedor puede aceptar solicitudes de ejecución de tareas.
Si detiene (no termina) una instancia de contenedor, el estado permanece ACTIVE
, pero el estado de conexión del agente cambia a FALSE
en pocos minutos. Cualquier tarea que se estuviera ejecutando en la instancia de contenedor se para. Si vuelve a comenzar la instancia de contenedor, el agente de contenedor vuelve a conectarse al servicio de Amazon ECS, y usted podrá volver a ejecutar tareas en la instancia.
importante
Si detiene e inicia una instancia de contenedor o reinicia esa instancia, algunas versiones más antiguas del agente de contenedor de Amazon ECS vuelven a registrar la instancia sin anular el registro del ID de la instancia de contenedor original. En este caso, Amazon ECS muestra más instancias de contenedor en el clúster de las que tiene en realidad. (Si dispone de ID de instancias de contenedor duplicados para el mismo ID de instancia de Amazon EC2, puede anular con seguridad el registro de los duplicados que se muestran como ACTIVE
con un estado de conexión de agente FALSE
). Este problema se corrige en la versión actual del agente de contenedor de Amazon ECS. Para obtener más información sobre cómo actualizar a la versión actual, consulte Actualización del agente de contenedor de Amazon ECS.
Si cambia el estado de una instancia de contenedor a DRAINING
, las nuevas tareas no se colocan en la instancia de contenedor. Cualquier tarea de servicio que se ejecute en la instancia de contenedor se elimina, si es posible, para que pueda llevar a cabo las actualizaciones del sistema. Para obtener más información, consulte Drenaje de instancias de contenedor de Amazon ECS.
Si cancela el registro o termina una instancia de contenedor, el estado de la instancia de contenedor cambia a INACTIVE
de inmediato y la instancia de contenedor ya no se notifica cuando se enumeran las instancias de contenedor. No obstante, puede seguir describiendo la instancia de contenedor para una hora tras la terminación. Después de una hora, la descripción de la instancia ya no está disponible.
importante
Puede drenar las instancias manualmente o crear un enlace del ciclo de vida del grupo de Auto Scaling para establecer el estado de la instancia en DRAINING
. Para obtener más información sobre los enlaces de ciclo de vida de Auto Scaling, consulte Enlaces de ciclo de vida de Amazon EC2 Auto Scaling.
Compatibilidad con Docker
Amazon ECS es compatible con las dos últimas versiones principales de Docker publicadas en Amazon Linux. Actualmente, esto incluye Docker 20.10.x y Docker 25.x.
La versión mínima de Docker necesaria para Amazon ECS se encuentra en el archivo de especificaciones del agente de Amazon ECS
Al utilizar la AMI optimizada para Amazon ECS, Docker está previamente instalado y configurado para funcionar con el agente de contenedor de Amazon ECS. La AMI incluye una versión de Docker probada y compatible con Amazon ECS.
nota
Si bien Amazon ECS admite varias versiones de Docker, recomendamos usar la versión de Docker que viene con la AMI optimizada para Amazon ECS para obtener la mejor compatibilidad.
AMI optimizada para Amazon ECS
Las variantes de Linux de la AMI optimizada para Amazon ECS utilizan la AMI de Amazon Linux 2 como base. El nombre de AMI de origen de Amazon Linux 2 para cada variante se puede recuperar consultando la API de Systems Manager Parameter Store. Para obtener más información, consulte Recuperación de metadatos de las AMI de Linux optimizadas para Amazon ECS. Cuando lanza las instancias de contenedor desde la AMI de Amazon Linux 2 optimizada para Amazon ECS más reciente, recibirá la versión actual del agente de contenedor. Para lanzar una instancia de contenedor con la AMI de Amazon Linux 2 optimizada para Amazon ECS, consulte Lanzamiento de una instancia de contenedor de Linux de Amazon ECS.
Información adicional
En las páginas siguientes se proporciona información adicional acerca de los cambios:
-
El código de origen de la aplicación
ecs-init
y los scripts y la configuración para empaquetar el agente ahora forman parte del repositorio de agentes. Para ver versiones anteriores deecs-init
y paquetes, consulte el registro de cambios de Amazon ecs-initen GitHub. -
Notas de la versión de Docker Engine
en la documentación de Docker -
Documentación de controlador NVIDIA
en la documentación de NVIDIA
Parámetros de configuración del registro del agente de contenedor de Amazon ECS
El agente de contenedor de Amazon ECS almacena registros en las instancias de contenedor.
Para el agente de contenedor versión 1.36.0 y posterior, los registros se encuentran de forma predeterminada en /var/log/ecs/ecs-agent.log
en instancias de Linux y en C:\ProgramData\Amazon\ECS\log\ecs-agent.log
en instancias de Windows.
Para el agente de contenedor versión 1.35.0 y anterior, los registros se encuentran de forma predeterminada en /var/log/ecs/ecs-agent.log.
en instancias de Linux y en timestamp
C:\ProgramData\Amazon\ECS\log\ecs-agent.log.
en instancias de Windows.timestamp
De forma predeterminada, los registros de agente rotan cada hora y se almacena un máximo de 24 registros.
A continuación se muestran las variables de configuración del agente de contenedor que se pueden utilizar para cambiar el comportamiento de registro de agente predeterminado. Para obtener información detallada sobre todos los parámetros de configuración disponibles, consulte Configuración del agente de contenedor de Amazon ECS o el README del agente de Amazon ECS
Para el agente de contenedor versión 1.36.0 y posterior, a continuación se ofrece un archivo de registro de ejemplo cuando se utiliza el formato logfmt
.
level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go
level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go
level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go
level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go
level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go
A continuación se ofrece un archivo de registro de ejemplo cuando se utiliza el formato JSON.
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}
Para el agente de contenedor versión 1.35.0 y anterior, a continuación se muestra el formato del archivo de registro.
2016-08-15T15:54:41Z [INFO] Starting Agent: Amazon ECS Agent - v1.12.0 (895f3c1)
2016-08-15T15:54:41Z [INFO] Loading configuration
2016-08-15T15:54:41Z [WARN] Invalid value for task cleanup duration, will be overridden to 3h0m0s, parsed value 0, minimum threshold 1m0s
2016-08-15T15:54:41Z [INFO] Checkpointing is enabled. Attempting to load state
2016-08-15T15:54:41Z [INFO] Loading state! module="statemanager"
2016-08-15T15:54:41Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22]
2016-08-15T15:54:41Z [INFO] Registering Instance with ECS
2016-08-15T15:54:41Z [INFO] Registered! module="api client"