Creación de un grupo de nodos administrados con bloques de capacidad para ML - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Creación de un grupo de nodos administrados con bloques de capacidad para ML

Los bloques de capacidad para machine learning (ML) permiten reservar instancias de GPU en una fecha futura para respaldar cargas de trabajo de ML de corta duración. Para obtener más información, consulte Bloques de capacidad para ML en la Guía del usuario de Amazon EC2 para instancias de Linux.

Consideraciones

importante
  • Los bloques de capacidad solo están disponibles para determinados tipos de instancias de Amazon EC2 y Regiones de AWS. Para obtener información sobre compatibilidad, consulte los requisitos previos para trabajar con bloques de capacidad en la Guía del usuario de Amazon EC2 para instancias de Linux.

  • Para obtener más información, consulte Use Capacity Blocks for machine learning workloads en la Guía del usuario de Amazon EC2 Auto Scaling.

  • Los grupos de nodos administrados con bloques de capacidad solo se pueden crear con plantillas de lanzamiento personalizadas.

  • Al actualizar grupos de nodos administrados con bloques de capacidad, asegúrese de que el tamaño deseado del grupo de nodos esté establecido en 0.

Creación de un grupo de nodos administrados con bloques de capacidad de Amazon EC2

Puede utilizar bloques de capacidad con grupos de nodos administrados de Amazon EKS para aprovisionar y escalar nodos de trabajo acelerados por GPU. Los ejemplos de plantillas de AWS CloudFormation que aparecen a continuación no cubren todos los aspectos necesarios en un clúster de producción. Por lo general, también querrá un script de arranque para unir el nodo al clúster y especificar la AMI acelerada de Amazon EKS. Para obtener más información, consulte Creación de un grupo de nodos administrados para un clúster.

  1. Cree una plantilla de lanzamiento adecuada para sus cargas de trabajo y que funcione con los grupos de nodos administrados por Amazon EKS. Para obtener más información, consulte Personalización de nodos administrados con plantillas de lanzamiento.

    Además de los requisitos de los procedimientos anteriores, asegúrese de que LaunchTemplateData incluya lo siguiente:

    • InstanceMarketOptions con "capacity-block" establecido en MarketType

    • CapacityReservationSpecification: CapacityReservationTarget con CapacityReservationId establecido en el bloque de capacidad (por ejemplo: cr-02168da1478b509e0)

    • InstanceType establecido en un tipo de instancia que admita bloques de capacidad (por ejemplo: p5.48xlarge)

    A continuación se muestra un extracto de una plantilla de CloudFormation que crea una plantilla de lanzamiento dirigida a un bloque de capacidad. Para crear un grupo de nodos administrado por AMI personalizado, también puede agregar los parámetros ImageId y UserData.

    NodeLaunchTemplate: Type: "AWS::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" InstanceType: p5.48xlarge
  2. Utilice la plantilla de lanzamiento para crear un grupo de nodos administrados.

    A continuación, se muestra un ejemplo de comando de creación de grupos de nodos para bloques de capacidad. Sustituya example-values por los que se apliquen a su clúster.

    Al crear el grupo de nodos administrados por bloques de capacidad, haga lo siguiente:

    • Configure el capacity-type en "CAPACITY_BLOCK". Si el tipo de capacidad no está configurado en "CAPACITY_BLOCK" o falta alguno de los valores de plantilla de inicialización requeridos anteriormente, se rechazará la solicitud de creación.

    • Al especificar subnets en la solicitud de creación, asegúrese de especificar solo la subred de la misma zona de disponibilidad que la reserva de capacidad.

    • Si especifica un valor distinto de cero de desiredSize en la solicitud de creación, Amazon EKS lo respetará al crear el grupo de escalado automático (ASG). Sin embargo, si la solicitud de creación se efectúa antes de que la reserva de capacidad esté activa, el ASG no podrá inicializar instancias de Amazon EC2 hasta que se active. Como resultado, las actividades de escalado de ASG tendrán errores de inicio. Siempre que la reserva se active, las instancias se lanzarán correctamente y el ASG se ampliará hasta alcanzar el desiredSize mencionado en el momento de la creación.

    aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-mng \ --node-role node-role-arn \ --region region-code \ --subnets subnet-id \ --scaling-config minSize=node-group-min-size,maxSize=node-group-max-size,desiredSize=node-group-desired-size \ --capacity-type "CAPACITY_BLOCK" \ --launch-template id="lt-id",version=1
  3. Asegúrese de que los nodos se unan después del escalado vertical. Los clústeres de Amazon EKS que utilizan grupos de nodos administrados con bloques de capacidad no llevan a cabo ninguna validación de que las instancias lanzadas realmente se unan al clúster y se registren en él.

  4. Si ha configurado desiredSize en 0 en el momento de la creación, tiene diferentes opciones para escalar verticalmente el grupo de nodos cuando se active la reserva de capacidad:

    • Cree una política de escalado programado para el ASG que se ajuste a los tiempos de reserva del bloque de capacidad. Para obtener más información, consulte Scheduled scaling for Amazon EC2 Auto Scaling en la Guía del usuario de Amazon EC2 Auto Scaling.

    • Utilice la consola de Amazon EKS o eks update-nodegroup-config para actualizar la configuración de escalado y establezca el tamaño deseado del grupo de nodos.

    • Utilice el Escalador automático de clústeres en Kubernetes. Para obtener más información, consulte Escalador automático de clústeres en AWS.

  5. El grupo de nodos ya está listo para la programación de cargas de trabajo y Pods.

  6. Para agotar los Pods sin problemas antes de que finalice la reserva, Amazon EKS utiliza una política de escalado programado para reducir verticalmente el tamaño del grupo de nodos a 0. Este escalado programado se establecerá con el nombre Amazon EKS Node Group Capacity Scaledown Before Reservation End. Se recomienda no editar ni eliminar esta acción.

    Amazon EC2 comienza a cerrar las instancias 30 minutos antes de la hora de finalización de la reserva. Como resultado, Amazon EKS configurará una reducción vertical programada del grupo de nodos 40 minutos antes de que finalice la reserva para poder desalojar los Pods de forma segura y sin problemas.