Determine el estado de las tareas de Amazon ECS mediante comprobaciones de estado de los contenedores
Al crear una definición de tarea, puede configurar una comprobación de estado para los contenedores. Las comprobaciones de estado son comandos que se ejecutan localmente en un contenedor y validan el estado y la disponibilidad de la aplicación.
El agente de contenedor de Amazon ECS solo monitorea e informa sobre las comprobaciones de estado que están especificadas en la definición de tareas. Amazon ECS no monitorea las comprobaciones de estado de Docker que están integradas en una imagen de contenedor, pero que no están especificadas en la definición de contenedor. Los parámetros de comprobación de estado especificados en la definición de un contenedor prevalecen sobre las comprobaciones de estado de Docker que existan en la imagen del contenedor.
Cuando se define una comprobación de estado en la definición de una tarea, el contenedor ejecuta el proceso de comprobación de estado dentro del contenedor y, a continuación, evalúa el código de salida para determinar el estado de la aplicación.
La comprobación de estado consta de los siguientes parámetros:
-
Comando: el comando que ejecuta el contenedor para determinar si está en buen estado. La matriz de cadenas puede comenzar por
CMD
para ejecutar los argumentos del comando directamente, o porCMD-SHELL
para ejecutar el comando con el shell predeterminado del contenedor. -
Intervalo: el periodo de tiempo (en segundos) entre cada comprobación de estado.
-
Tiempo de espera: el periodo de tiempo (en segundos) que hay que esperar para que una comprobación de estado se lleve a cabo correctamente antes de que se considere un error.
-
Reintentos: el número de veces que se reintenta una comprobación de estado fallida antes de que se considere que el contenedor está en mal estado.
-
Periodo de inicio: el periodo de gracia opcional dentro del cual se puede proporcionar tiempo a los contenedores para el arranque antes de que una comprobación de estado fallida se cuente para el número máximo de reintentos.
Para obtener información sobre cómo especificar una comprobación de estado en una definición de tarea, consulte Comprobación de estado.
A continuación se describen los valores de estado posibles para un contenedor:
-
HEALTHY
: la comprobación de estado del contenedor se ha superado correctamente. -
UNHEALTHY
: error al realizar la comprobación de estado del contenedor. -
UNKNOWN
: se está evaluando la comprobación del estado del contenedor, no se ha definido ninguna comprobación de estado del contenedor o Amazon ECS no tiene el estado de salud del contenedor.
Los comandos de comprobación de estado se ejecutan en el contenedor. Por lo tanto, debe incluir los comandos en la imagen del contenedor.
La comprobación de estado se conecta a la aplicación a través de la interfaz de bucle invertido del contenedor en localhost
o 127.0.0.1
. Un código de salida 0
indica una correcta ejecución y un código de salida distinto de cero indica error.
Tenga en cuenta lo siguiente al utilizar las comprobaciones de estado de los contenedores:
-
Las comprobaciones de estado del contenedor requieren la versión 1.17.0 o posterior del agente de contenedor de Amazon ECS.
-
Se admiten comprobaciones de estado de contenedores para tareas de Fargate si utiliza la versión de la plataforma Linux
1.1.0
o posterior o la versión de la plataforma Windows1.1.0
o posterior
Cómo determina Amazon ECS el estado de las tareas
Los contenedores que son esenciales y que incluyen el comando de comprobación de estado en la definición de la tarea son los únicos que se tienen en cuenta para determinar el estado de la tarea.
Se evalúan por orden las siguientes reglas:
-
Si el estado de un contenedor esencial es
UNHEALTHY
, entonces el estado de la tarea esUNHEALTHY
. -
Si el estado de un contenedor esencial es
UNKNOWN
, entonces el estado de la tarea esUNKNOWN
. -
Si el estado de todos los contenedores esenciales es
HEALTHY
, entonces el estado de la tarea esHEALTHY
.
Observe el siguiente ejemplo de estado de la tarea con 2 contenedores esenciales.
Estado del contenedor 1 | Estado del contenedor 2 | Estado de la tarea |
---|---|---|
UNHEALTHY |
UNKNOWN |
UNHEALTHY |
UNHEALTHY |
HEALTHY |
UNHEALTHY |
HEALTHY |
UNKNOWN |
UNKNOWN |
HEALTHY |
HEALTHY |
HEALTHY |
Observe el siguiente ejemplo de estado de la tarea con 3 contenedores.
Estado del contenedor 1 | Estado del contenedor 2 | Estado del contenedor 3 | Estado de la tarea |
---|---|---|---|
UNHEALTHY |
UNKNOWN |
UNKNOWN |
UNHEALTHY |
UNHEALTHY |
UNKNOWN |
HEALTHY |
UNHEALTHY |
UNHEALTHY |
HEALTHY |
HEALTHY |
UNHEALTHY |
HEALTHY |
UNKNOWN |
HEALTHY |
UNKNOWN |
HEALTHY |
UNKNOWN |
UNKNOWN |
UNKNOWN |
HEALTHY |
HEALTHY |
HEALTHY |
HEALTHY |
Impacto de las desconexiones de agentes en las comprobaciones de estado
Si el agente de contenedores de Amazon ECS se desconecta del servicio Amazon ECS, el contenedor no pasará al estado UNHEALTHY
. Esto se ha diseñado para garantizar que los contenedores permanezcan en funcionamiento durante el reinicio de los agentes o cuando no estén disponibles temporalmente. El estado de la comprobación de estado es la respuesta de la “última vez que se comunicó” el agente de Amazon ECS, por lo que si se consideró que el estado del contenedor era HEALTHY
antes de la desconexión, ese estado se mantendrá hasta que el agente se vuelva a conectar y se haga otra comprobación de estado. No se hace ninguna suposición sobre el estado de las comprobaciones de estado de los contenedores.