¿Cómo puedo utilizar los proveedores de capacidad de Fargate Spot para Amazon ECS?

6 minutos de lectura
0

Quiero utilizar los proveedores de capacidad de AWS Fargate Spot para Amazon Elastic Container Service (Amazon ECS).

Descripción breve

Antes de empezar, tenga en cuenta lo siguiente:

  • No es necesario crear los proveedores de capacidad de Fargate y Fargate Spot. Están disponibles para todas las cuentas y solo deben estar asociados a un clúster para que estén disponibles para su uso.
  • El proveedor de capacidad de Fargate Spot se puede asociar a un clúster existente mediante la API de ECS PutClusterCapacityProviders y la referencia de comandos de ECS CLI put-cluster-capacity-providers. La Consola de administración de AWS no admite la adición del proveedor de capacidad de Fargate Spot a un clúster existente.
  • Los proveedores de capacidad de Fargate y Fargate Spot están reservados y no se pueden eliminar. Puede desvincularlos de un clúster mediante la API PutClusterCapacityProviders.
  • Fargate Spot requiere que su tarea utilice la versión 1.3.0 o posterior de la plataforma (para Linux) y el proveedor de capacidad de Fargate Spot no es compatible con los contenedores de Windows en Fargate.

Resolución

Nota: Si recibe errores al ejecutar los comandos de la CLI de AWS, asegúrese de utilizar la versión más reciente de la CLI de AWS.

Creación, asociación y desvinculación del proveedor de capacidad de Fargate Spot con su clúster

Los proveedores de capacidad de Fargate Spot se asocian automáticamente con el clúster cuando se crean desde la consola de Amazon ECS mediante la plantilla de clústeres Solo redes. Para obtener más información, consulte Creación de un clúster para el tipo de lanzamiento de Fargate mediante la nueva consola.

Asociación del proveedor de capacidad de Fargate Spot con su clúster

Si el proveedor de capacidad de Fargate Spot todavía no está asociado, puede asociarlo con su clúster mediante la API PutClusterCapacityProviders o el siguiente comando de la CLI de AWS:

aws ecs put-cluster-capacity-providers \
        --cluster <Cluster_name> \
        --capacity-providers FARGATE FARGATE_SPOT \
        --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \
        --region <Region>

Importante: Para evitar sobrescribir sus proveedores de capacidad, incluya todos los proveedores de capacidad existentes y la estrategia de los proveedores de capacidad en el comando anterior. Los proveedores de capacidad que no están incluidos en el comando se desvinculan del clúster.

Desvinculación del proveedor de capacidad de Fargate Spot con su clúster

Todos los proveedores de capacidad existentes que estén asociados con el clúster y que se omitan de una llamada a la API PutClusterCapacityProviders, se desvincularán del clúster. Para desvincular el proveedor de capacidad de Fargate Spot de su clúster de Amazon ECS, ejecute el siguiente comando de la CLI de AWS:

aws ecs put-cluster-capacity-providers \
        --cluster <Cluster_name> \
        --capacity-providers FARGATE \
        --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 \
        --region <Region>

Comprobación de la asociación de su proveedor de capacidad de Fargate Spot con su clúster de Amazon ECS

Para comprobar que el proveedor de capacidad de Fargate Spot esté asociado a su clúster de Amazon ECS, ejecute el siguiente comando:

aws ecs describe-clusters \
        --cluster <Cluster_name> \
        --region <Region>

El resultado es similar al siguiente:

Output:
      "capacityProviders": [
           "FARGATE",
           "FARGATE_SPOT"
      ]

Nota: El resultado del comando anterior incluye la sección capacityProviders, que contiene los proveedores de capacidad que están asociados con su clúster de Amazon ECS.

Ejecución de una tarea o creación de un servicio con el proveedor de capacidad de Fargate Spot

Para ejecutar una tarea mediante un proveedor de capacidad de Fargate Spot, ejecute el siguiente comando:

aws ecs run-task \
        --cluster <Cluster_name> \
        --capacity-provider-strategy capacityProvider=FARGATE_SPOT,weight=1 \
        --task-definition <Task_definition_family>:<revision> \
        --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \
        --count <Number_of_Tasks> \
        --region <Region>

Para crear un servicio de Amazon ECS que utilice los proveedores de capacidad de Fargate Spot, ejecute el siguiente comando:

aws ecs create-service \
        --cluster <Cluster_name> \
        --service-name <Service_name> \
        --capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \
        --task-definition <Task_defintition_family>:<revision> \
        --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \
        --desired-count <Number_of_tasks> \
        --region <Region>

Comprobación de la ejecución de sus tareas en el proveedor de capacidad de Fargate Spot

Para confirmar que sus tareas utilizan los proveedores de capacidad de Fargate, ejecute el siguiente comando:

aws ecs describe-tasks
        --cluster <Cluster_name> \
        --tasks <TaskID> \
        --region <Region>

Actualmente, el seguimiento del uso de Fargate OnDemand y Fargate Spot por servicio desde Amazon CloudWatch no es compatible. Sin embargo, puede ver la métrica del uso total de Fargate OnDemand y Spot con CloudWatch. Para obtener más información, consulte Métricas de uso de AWS Fargate.

Preguntas frecuentes

¿Cuáles son algunas de las prácticas recomendadas de Fargate Spot?

  • Fargate Spot es genial para cargas de trabajo sin estado y tolerantes a errores, pero no dependa únicamente de Spot Tasks para las cargas de trabajo críticas. En su lugar, configure una combinación de tareas normales de Fargate.
  • Gestione las interrupciones correctamente captando las señales SIGTERM. Al recibir una señal SIGTERM, se recomienda configurar StopTimeout en 120 segundos. Para obtener más información, consulte Cierres estables con ECS.
  • Las aplicaciones que se ejecuten en Fargate Spot deben ser tolerantes a errores.

¿Qué ocurre con las tareas cuando la capacidad de FARGATE_SPOT no está disponible?

Cuando el programador de ECS no puede iniciar una tarea debido a que la capacidad no está disponible, se emite el evento SERVICE_TASK_PLACEMENT_FAILURE. La tarea no llegará a la primera etapa de APROVISIONAMIENTO y no aparecerá ningún aviso en los eventos de ECS. El programador de ECS seguirá intentando iniciar la tarea. Si la capacidad pasa a estar disponible, se emitirá el evento SERVICE_STEADY_STATE.

¿Se produce una conmutación por error en Fargate cuando no hay ninguna capacidad de Fargate Spot disponible?

No es posible tener un mecanismo de conmutación por recuperación para FARGATE cuando no hay ninguna capacidad de FARGATE_SPOT disponible.

¿Hay un ejemplo de cómo se colocan las tareas cuando se utilizan los proveedores de capacidad en un servicio de ECS?

Para este ejemplo, hay una estrategia de proveedor de capacidad que contiene los dos proveedores de capacidad siguientes:

Provider 1: FARGATE      |  Base:2   Weight:1
Provider 2: FARGATE_SPOT |  Base:0   Weight:3

Según esta estrategia, una vez satisfecho el valor base, por cada tarea que se ejecuta con FARGATE, tres tareas utilizan FARGATE_SPOT. Cuando se crea el servicio de ECS con el recuento deseado de 5, ocurre lo siguiente:

  • Se inician 2 tareas con FARGATE para satisfacer el valor base y las 3 restantes se dividen entre FARGATE y FARGATE_SPOT con una relación de 1:3.
  • Se ejecutan 3 tareas con FARGATE y 2 en FARGATE_SPOT.

Mediante esta misma estrategia, con un evento de escalado ascendente que se haya producido y al aumentar el recuento deseado a 9. El programador de ECS verá que ya se han ejecutado 3 tareas con FARGATE con la base satisfecha. Además, verá que las 4 nuevas tareas que están en estado APROVISIONAMIENTO se dividen entre FARGATE y FARGATE_SPOT con una relación de 1:3. Se ejecutan las 4 tareas finales con FARGATE y 5 en FARGATE_SPOT.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años