Para las tareas que utilizan el tipo de lanzamiento de EC2, Amazon ECS debe determinar dónde se colocará la tarea en función de los requisitos especificados en la definición de la tarea, como la CPU y la memoria. Del mismo modo, cuando se reduce la escala del número de tareas, Amazon ECS debe determinar qué tareas debe terminar. Puede aplicar estrategias y restricciones de ubicación de tareas para personalizar la manera en la que Amazon ECS ubica y termina las tareas.
Las estrategias de ubicación de tareas por defecto dependen de si ejecuta las tareas manualmente (tareas independientes) o dentro de un servicio. Para las tareas que se ejecutan como parte de un servicio de Amazon ECS, la estrategia de ubicación de tareas es spread
mediante attribute:ecs.availability-zone
. No existe una restricción de ubicación de tareas predeterminada para las tareas que no están en los servicios. Para obtener más información, consulte Programación de los contenedores en Amazon ECS.
nota
Las estrategias de ubicación de tareas se realizan en la medida de lo posible. Amazon ECS sigue intentando ubicar tareas, incluso cuando la opción de ubicación más adecuada no está disponible. Sin embargo, las restricciones de ubicación de tareas son vinculantes, y pueden impedir la ubicación de tareas.
Puede utilizar juntas estrategias y restricciones de ubicación de tareas. Por ejemplo, puede utilizar una estrategia de ubicación de tareas y una delimitación de ubicación de tareas para distribuir tareas entre las zonas de disponibilidad y agruparlas en bin packing en función de la memoria de cada zona de disponibilidad, pero únicamente si se trata de instancias G2.
Cuando Amazon ECS ubica las tareas, utiliza este proceso para seleccionar instancias de contenedor:
-
Identificar las instancias de contenedor que satisfacen los requisitos de CPU, GPU, memoria y puerto en la definición de tareas.
-
Identificar las instancias de contenedor que satisfacen las restricciones de ubicación de tareas.
-
Identificar las instancias de contenedor que satisfacen las estrategias de ubicación de tareas.
-
Seleccionar las instancias de contenedor para ubicación de tareas.
Las estrategias de ubicación de tareas se especifican en la definición del servicio o en la definición de la tarea mediante el parámetro placementStrategy
.
"placementStrategy": [
{
"field": "The field to apply the placement strategy against",
"type": "The placement strategy to use"
}
]
Puede especificar las estrategias al ejecutar una tarea (RunTask), crear un nuevo servicio (CreateService) o actualizar un servicio existente (UpdateService).
En la tabla siguiente, se describen los tipos y campos disponibles.
type | Valores de campo válidos |
---|---|
binpack Las tareas se colocan en instancias de contenedor para dejar la menor cantidad de CPU o memoria sin usar. Esta estrategia minimiza el número de instancias de contenedor en uso. Cuando se utiliza esta estrategia y se realiza una acción de reducción horizontal, Amazon ECS termina las tareas. Lo hace en función de la cantidad de recursos que quedan en la instancia del contenedor una vez terminada la tarea. La instancia de contenedor que tenga la mayor cantidad de recursos disponibles después de la terminación de la tarea hace que esa tarea termine. |
|
random Las tareas se colocan aleatoriamente. |
No se utiliza |
spread Las tareas se colocan uniformemente en función del valor especificado. Las tareas de servicio se distribuyen en función de las tareas de dicho servicio. Las tareas independientes se distribuyen en función de las tareas del mismo grupo de tareas. Para obtener más información acerca de los grupos de tareas, consulte Agrupación de tareas relacionadas con Amazon ECS .Cuando se utiliza la estrategia |
|
Las estrategias de colocación de tareas también se pueden actualizar para los servicios existentes. Para obtener más información, consulte Cómo coloca Amazon ECS las tareas en las instancias de contenedor.
Puede crear una estrategia de ubicación de tareas que utilice varias estrategias mediante la creación de conjuntos de estrategias en el orden en que desee que se realicen. Por ejemplo, si desea distribuir las tareas entre las zonas de disponibilidad y, a continuación, agrupar las tareas en función de la memoria de cada zona de disponibilidad, especifique la estrategia de la zona de disponibilidad seguida de la estrategia de memoria. Para ver ejemplos de estrategias, consulte Ejemplo de estrategias de ubicación de tareas de Amazon ECS.