Drenaje de instancias de contenedor de Amazon ECS
Es posible que, en ocasiones, se deba eliminar una instancia de contenedor de un clúster; por ejemplo, para realizar actualizaciones del sistema o reducir verticalmente la capacidad del clúster. Amazon ECS ofrece la capacidad de pasar de una instancia de contenedor a un estado DRAINING
. Esto se denomina vaciado de instancias de contenedor. Cuando se establece una instancia de contenedor en DRAINING
, Amazon ECS evita que se programen nuevas tareas para su ubicación en la instancia de contenedor.
Comportamiento de drenaje de los servicios
Se detiene de inmediato cualquier tarea que forme parte de un servicio que se encuentre en estado PENDING
. Si la instancia de contenedor tienen capacidad disponible en el clúster, el programador de servicios iniciará las tareas de sustitución. Si la instancia de contenedor no dispone de capacidad suficiente, se enviará un mensaje de evento de servicio indicando el problema.
Las tareas que forman parte de un servicio en la instancia de contenedor y se encuentran en estado RUNNING
pasan al estado STOPPED
. El programador de servicios intenta sustituir las tareas de acuerdo con los parámetros minimumHealthyPercent
y maximumPercent
de configuración y el tipo de implementación del servicio. Para obtener más información, consulte Servicios de Amazon ECS y Parámetros de definición de servicio de Amazon ECS.
-
Si
minimumHealthyPercent
está por debajo del 100%, el programador puede hacer caso omiso dedesiredCount
temporalmente durante la sustitución de tareas. Por ejemplo,desiredCount
son cuatro tareas, un mínimo del 50% permite al programador detener dos tareas existentes antes de iniciar dos nuevas tareas. Si el mínimo es el 100%, el programador de servicio no puede eliminar las tareas existentes hasta que las tareas de sustitución se consideren en buen estado. Si hay tareas para servicios que no utilizan un balanceador de carga en el estadoRUNNING
, se consideran en buen estado. Las tareas para servicios que utilizan un balanceador de carga se consideran en buen estado si están en estadoRUNNING
y el balanceador de carga notifica que la instancia de contenedor en la que están alojados tiene buen estado.importante
Si usa instancias de spot y
minimumHealthyPercent
es superior o igual al 100 %, el servicio no tendrá tiempo suficiente para reemplazar la tarea antes de que finalice la instancia de spot. -
El parámetro
maximumPercent
representa un límite superior en la cantidad de tareas en ejecución durante la sustitución de tareas, que permite definir el tamaño del lote de sustitución. Por ejemplo, sidesiredCount
de cuatro tareas, un máximo de 200% comienza cuatro tareas nuevas antes de parar las cuatro tareas que se van a vaciar (siempre que los recursos del clúster requeridos para hacer esto estén disponibles). Si el mínimo es 100%, entonces las tareas de sustitución no pueden comenzar hasta que se hayan parado las tareas de vaciado.importante
Si tanto
minimumHealthyPercent
comomaximumPercent
son el 100 %, entonces el servicio no puede eliminar las tareas existentes y tampoco puede iniciar tareas de reemplazo. Esto impide el drenaje correcto de las instancias de contenedores e impide realizar nuevas implementaciones.
Comportamiento de drenaje para tareas independientes
Las tarea independiente en estado PENDING
o RUNNING
no se verán afectadas; debe esperar a que se detengan por su cuenta o detenerlas manualmente. La instancia de contenedor permanecerá en el estado DRAINING
.
Una instancia de contenedor ha completado el vaciado cuando todas las tareas que se ejecutan en la instancia pasan al estado STOPPED
. La instancia de contenedor permanece en estado DRAINING
hasta que se vuelva a activar o se elimine. Puede verificar el estado de las tareas de la instancia de contenedor mediante la operación ListTasks, a través del parámetro containerInstance
, para obtener una lista de tareas de la instancia, y realizar a continuación la operación DescribeTasks, a través del nombre de recurso de Amazon (ARN) o el ID de cada tarea, para verificar el estado de la tarea.
Cuando esté listo para que la instancia de contenedor comience a alojar nuevamente tareas, cambie el estado de la instancia de contenedor de DRAINING
a ACTIVE
. El programador de servicios de Amazon ECS volverá a considerar la instancia de contenedor para la ubicación de tareas.
Procedimiento
Para establecer una instancia de contenedor en vaciado desde la nueva AWS Management Console, siga estos pasos.
También puede utilizar la acción de API UpdateContainerInstancesState o el comando update-container-instances-state para cambiar el estado de una instancia de contenedor a DRAINING
.
AWS Management Console
Abra la consola en https://console.aws.amazon.com/ecs/v2
. -
En el panel de navegación, seleccione Clusters (Clústeres).
-
En la página Clusters (Clústeres), elija un clúster que aloja sus instancias.
-
En la página de Cluster :
name
(Clúster; nombre), elija la pestaña Infrastructure (Infraestructura). En Container instances (Instancias de contenedor) seleccione la casilla de verificación junto a cada instancia de contenedor que desee vaciar. -
Elija Acciones, Vaciar.