Lógica de limitación controlada de servicios de Amazon ECS
El programador de servicios de Amazon ECS incluye una lógica que limita la frecuencia con la que se lanzan las tareas del servicio si no pueden iniciarse tras varios intentos.
Si las tareas para un servicio no consiguen entrar en el estado RUNNING
tras varios intentos (al progresar directamente de PENDING
a STOPPED
), el tiempo entre intentos de reinicio siguientes se aumenta de forma gradual hasta un máximo de 27 minutos. Este periodo máximo está sujeto a cambios en el futuro. Este comportamiento reduce el efecto que tienen las tareas que no funcionan correctamente en los recursos del clúster de Amazon ECS o en los costes de infraestructura de Fargate. Si el servicio inicia la lógica de limitación, recibirá el siguiente mensaje de eventos de servicio:
(service
service-name
) is unable to consistently start tasks successfully.
Amazon ECS nunca impide que un servicio fallido vuelva a intentarlo. Tampoco intenta modificarlo de forma que no sea al aumentar el tiempo entre reinicios. La lógica de limitación del servicio no proporciona ningún parámetro que pueda ajustar el usuario.
Si actualiza el servicio para utilizar una nueva definición de tarea, el servicio vuelve a un estado normal, no limitado de inmediato. Para obtener más información, consulte Actualización de un servicio de Amazon ECS mediante la consola.
A continuación, se muestran algunas causas comunes que inician esta lógica. Le recomendamos que siga estos pasos manuales para solucionar el problema:
-
Una falta de recursos para alojar la tarea como, por ejemplo, puertos, memoria o unidades de CPU en el clúster. En este caso, también verá el mensaje de eventos de servicio de recursos insuficientes.
-
El agente de contenedor de Amazon ECS no puede extraer la imagen de Docker de la tarea. Esto puede deberse a un mal nombre de imagen del contenedor, imagen o etiqueta o a la falta de autenticación o permisos del registro privado. En este caso, también ve
CannotPullContainerError
en sus errores de tarea detenida. -
Espacio en disco insuficiente en su instancia de contenedor para crear el contenedor. En este caso, también ve
CannotCreateContainerError
en sus errores de tarea detenida. Para obtener más información, consulte Solución del problema de Docker API error (500): devmapper en Amazon ECS.
importante
Las tareas que se detienen después de que alcancen el estado RUNNING
no activan la lógica de limitación o el mensaje de eventos de servicio asociado. Por ejemplo, supongamos que las comprobaciones de estado del equilibrador de carga elástico fallidas para un servicio hacen que una tarea se marque como en mal estado y Amazon ECS anula el registro y detiene la tarea. En este punto, las tareas no están limitadas. Incluso si el comando de contenedor de una tarea se cierra inmediatamente con un código de salida distinto de cero, la tarea ya se ha movido al estado RUNNING
. Las tareas que fallan inmediatamente debido a errores de comando no activan la limitación o el mensaje de eventos de servicio.