Agente de contenedor de Amazon ECS - Amazon Elastic Container Service

Agente de contenedor 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.

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 1.9.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.

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:

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.timestamp en instancias de Linux y en C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp en instancias de Windows.

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 más información, consulte Configuración del agente de contenedor de Amazon ECS.

ECS_LOGFILE

Valores de ejemplo: /ecs-agent.log

Valor predeterminado en Linux: Null

Valor predeterminado en Windows: Null

La ubicación en la que se deben escribir los registros del agente. Si está ejecutando el agente a través de ecs-init, que es el método predeterminado cuando se utiliza la AMI optimizada para Amazon ECS, la ruta dentro del contenedor es /log, y ecs-init lo monta en el directorio /var/log/ecs/ del host.

ECS_LOGLEVEL

Valores de muestra: crit, error, warn, info y debug

Valor predeterminado en Linux: info

Valor predeterminado en Windows: info

El nivel de detalle con el que se va a registrar.

ECS_LOGLEVEL_ON_INSTANCE

Valores de muestra: none, crit, error, warn, info, debug

Valor predeterminado en Linux: none, si ECS_LOG_DRIVER se establece explícitamente en un valor no vacío; de lo contrario, el mismo valor que ECS_LOGLEVEL

Valor predeterminado en Windows: none, si ECS_LOG_DRIVER se establece explícitamente en un valor no vacío; de lo contrario, el mismo valor que ECS_LOGLEVEL

Se puede utilizar para anular ECS_LOGLEVEL y establecer un nivel de detalle que debe registrarse en el archivo de registro en la instancia, separado del nivel que se registra en el controlador de registro. Si se establece explícitamente un controlador de registro, los registros en la instancia se desactivan de forma predeterminada. Se pueden volver a activar con esta variable.

ECS_LOG_DRIVER

Valores de ejemplo: awslogs, fluentd, gelf, json-file, journald, logentries syslog, splunk

Valor predeterminado en Linux: json-file

Valor predeterminado en Windows: No aplicable

Determina el controlador de registro que utiliza el contenedor del agente.

ECS_LOG_ROLLOVER_TYPE

Valores de ejemplo: size y hourly

Valor predeterminado en Linux: hourly

Valor predeterminado en Windows: hourly

Determina si el archivo de registro del agente del contenedor se sustituye en función de la hora o del tamaño. De forma predeterminada, el archivo de registro del agente se sustituye cada hora.

ECS_LOG_OUTPUT_FORMAT

Valores de ejemplo: logfmt y json

Valor predeterminado en Linux: logfmt

Valor predeterminado en Windows: logfmt

Determina el formato de salida del registro. Cuando se utiliza el formato json, cada línea del registro es un mapa JSON estructurado.

ECS_LOG_MAX_FILE_SIZE_MB

Valores de ejemplo: 10

Valor predeterminado en Linux: 10

Valor predeterminado en Windows: 10

Cuando la variable ECS_LOG_ROLLOVER_TYPE se establece en size, determina el tamaño máximo (en MB) del archivo de registro antes de que se sustituya. Si el tipo de sustitución está establecido en hourly, esta variable no se tiene en cuenta.

ECS_LOG_MAX_ROLL_COUNT

Valores de ejemplo: 24

Valor predeterminado en Linux: 24

Valor predeterminado en Windows: 24

Determina el número de archivos de registro sustituidos que deben conservarse. Los archivos de registro más antiguos se eliminan cuando se alcanza este límite.

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"