Implementación de los servicios de Amazon ECS mediante el reemplazo de tareas - Amazon Elastic Container Service

Implementación de los servicios de Amazon ECS mediante el reemplazo de tareas

Cuando crea un servicio que utiliza el tipo de implementación de actualización continua (ECS), el programador de servicios de Amazon ECS reemplaza las tareas que se ejecutan en ese momento por unas nuevas. El número de tareas que Amazon ECS agrega o elimina del servicio durante una actualización continua se controla mediante la configuración de implementación del servicio.

Amazon ECS utiliza los siguientes parámetros para determinar el número de tareas:

  • El valor minimumHealthyPercent representa el límite mínimo del número de tareas que se deben ejecutar para un servicio durante una implementación o cuando una instancia de contenedor se está agotando, como un porcentaje del número deseado de tareas para el servicio. Este valor se redondea hacia arriba. Por ejemplo, si el porcentaje mínimo en buen estado es 50 y el número de tareas deseado es cuatro, entonces el programador puede detener dos tareas existentes antes de iniciar dos nuevas. Del mismo modo, si el porcentaje mínimo en buen estado es del 75 % y el recuento de tareas deseado es dos, entonces el programador no puede detener ninguna tarea debido a que el valor resultante también es dos.

    Si las tareas no funcionan correctamente, el programador de servicios de Amazon ECS iniciará primero las tareas de reemplazo y las mantendrá con el minimumHealthyPercent hasta que las tareas de reemplazo estén en buen estado. A medida que las tareas de reemplazo se inicien y vayan recuperando el estado correcto, las tareas en mal estado se detendrán gradualmente.

  • El valor maximumPercent representa el límite máximo del número de tareas que se deben ejecutar para un servicio durante una implementación o cuando una instancia de contenedor se está agotando, como un porcentaje del número deseado de tareas para un servicio. Este valor se redondea hacia abajo. Por ejemplo, si el porcentaje máximo es 200 y el recuento de tareas deseado es cuatro, entonces el programador puede iniciar cuatro tareas nuevas antes de detener cuatro tareas existentes. Del mismo modo, si el porcentaje máximo es 125 y el recuento de tareas deseado es tres, el programador no puede iniciar ninguna tarea debido a que el valor resultante también es tres.

importante

Al establecer un porcentaje mínimo o uno máximo en buen estado, debe asegurarse de que el programador pueda detener o iniciar al menos una tarea cuando se inicia una implementación. Si la implementación del servicio está atascada debido a una configuración de implementación no válida, se enviará un mensaje de evento de servicio. Para obtener más información, consulte servicio (service-name) no pudo detener o iniciar tareas durante una implementación debido a la configuración de implementación del servicio. Actualice el valor minimumHealthyPercent o MaximumPercent y vuelva a intentarlo..

Las implementaciones continuas tienen dos métodos que proporcionan una forma de identificar rápidamente cuando se produce un error en la implementación de un servicio:

Los métodos se pueden utilizar por separado o juntos. Si utiliza ambos métodos, la implementación se establece en un estado con errores en cuanto se cumplen los criterios de error de cualquiera de los métodos.

Utilice las siguientes directrices para determinar qué método debe utilizar:

  • Interruptor: utilice este método cuando quiera detener una implementación en caso de que las tareas no puedan iniciarse.

  • Alarmas de CloudWatch: utilice este método cuando quiera detener una implementación en función de las métricas de la aplicación.

Ambos métodos permiten revertir a la revisión de servicio anterior.

Resolución de imagen de contenedor

De forma predeterminada, Amazon ECS convierte las etiquetas de imágenes de contenedores especificadas en la definición de la tarea en resúmenes de imágenes de contenedores. Si crea un servicio que ejecuta y mantiene una sola tarea, esa tarea se utiliza para establecer los resúmenes de imágenes de los contenedores de la tarea. Si crea un servicio que ejecuta y mantiene varias tareas, la primera tarea iniciada por el programador de servicios durante la implementación se utiliza para establecer resúmenes de imágenes para los contenedores de las tareas.

Si se producen errores en tres o más intentos de establecer los resúmenes de imágenes del contenedor, la implementación continúa sin la resolución del resumen de la imagen. Si el interruptor de circuito de implementación está activado, la implementación también fallará y se revertirá.

Una vez establecidos los resúmenes de imágenes del contenedor, Amazon ECS los utiliza para iniciar cualquier otra tarea deseada y para cualquier futura actualización del servicio. Esto garantiza que todas las tareas de un servicio ejecuten siempre imágenes de contenedor idénticas, resultando en la consistencia de las versiones del software.

Puede configurar este comportamiento para cada contenedor de la tarea mediante el parámetro versionConsistency de la definición del contenedor. Para obtener más información, consulte versionConsistency.

nota
  • Las versiones del agente de Amazon ECS inferiores a 1.31.0 no admiten la resolución de resúmenes de imágenes. Las versiones del agente 1.31.0 a 1.69.0 admiten la resolución de resúmenes de imágenes solo para las imágenes enviadas a los repositorios de Amazon ECR. Las versiones del agente 1.70.0 o superiores admiten la resolución de resúmenes de imágenes para todas las imágenes.

  • La versión de la plataforma Fargate Linux mínima para la resolución de resumen de imágenes es 1.3.0. La versión de la plataforma Fargate Windows mínima para la resolución de resumen de imágenes es 1.0.0.

  • Amazon ECS no captura resúmenes de contenedores sidecar administrados por Amazon ECS, como el agente de seguridad Amazon GuardDuty o el proxy Service Connect.

  • Para reducir la latencia potencial asociada a la resolución de imágenes de contenedores en servicios con varias tareas, ejecute la versión del agente Amazon ECS 1.83.0 o superior en las instancias de contenedor EC2. Para evitar la latencia potencial, especifique los resúmenes de imágenes del contenedor en la definición de la tarea.

  • Si se crea un servicio con un recuento de tareas deseado igual a cero, Amazon ECS no podrá establecer los resúmenes del contenedor hasta que active otra implementación del servicio con un recuento de tareas deseado superior a cero.

  • Para establecer resúmenes de imágenes actualizados, puede forzar una nueva implementación. Los resúmenes actualizados se utilizarán para iniciar nuevas tareas y no afectarán a las tareas que ya estén en ejecución. Para obtener más información sobre cómo forzar nuevas implementaciones, consulte ForceNewDeployment en la referencia de la API de Amazon ECS.