Crea nodi autogestiti con Capacity Blocks for ML - Amazon EKS

Aiutaci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Vuoi contribuire a questa guida per l'utente? Scegli il GitHub link Modifica questa pagina che si trova nel riquadro destro di ogni pagina. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea nodi autogestiti con Capacity Blocks for ML

I blocchi di capacità per il machine learning (ML) ti consentono di riservare istanze GPU in una data futura per supportare i carichi di lavoro ML di breve durata. Per ulteriori informazioni, consulta Capacity Blocks for ML nella Amazon EC2 User Guide for Linux Instances.

Considerazioni

Importante
  • I Blocchi di capacità sono disponibili solo per determinati tipi di EC2 istanze e AWS regioni Amazon. Per informazioni sulla compatibilità, consulta Work with Capacity Blocks Prerequisites nella Amazon EC2 User Guide for Linux Instances.

  • Al momento i Capacity Blocks non possono essere utilizzati con Karpenter.

  • Se crei un gruppo di nodi autogestito prima che la prenotazione di capacità diventi attiva, imposta la capacità 0 desiderata su.

  • Per avere tempo sufficiente per svuotare correttamente i nodi, suggeriamo di pianificare il dimensionamento fino a zero più di 30 minuti prima dell'orario di fine della prenotazione del blocco di capacità.

  • In ordine per il tuo Pods per essere drenato correttamente, ti consigliamo di configurare AWS Node Termination Handler come spiegato nei passaggi di esempio.

Usa Capacity Blocks con nodi autogestiti

Puoi utilizzare i blocchi di capacità con Amazon EKS per effettuare il provisioning e il dimensionamento dei nodi autogestiti. Le seguenti fasi forniscono una panoramica generale di esempio. Gli esempi AWS CloudFormation di modelli non coprono tutti gli aspetti necessari in un carico di lavoro di produzione. In genere è necessario anche uno script di bootstrap per unire il nodo al cluster, specificare un'AMI accelerata Amazon EKS e un profilo di istanza appropriato per l'aggiunta al cluster. Per ulteriori informazioni, consulta Crea nodi Amazon Linux autogestiti.

  1. Crea un modello di lancio applicabile al tuo carico di lavoro. Per ulteriori informazioni, consulta Use Capacity Blocks per carichi di lavoro di machine learning nella Amazon EC2 Auto Scaling User Guide.

    Assicurati che LaunchTemplateData includa quanto segue:

    • InstanceMarketOptions con MarketType impostato su "capacity-block"

    • CapacityReservationSpecification: CapacityReservationTargetcon CapacityReservationId impostato sul Capacity Block (ad esempio:cr-02168da1478b509e0 )

    • IamInstanceProfilecon il Arn set sul valore applicabile iam-instance-profile-arn

    • ImageIdimpostato su quello applicabile image-id

    • InstanceTypeimpostato su un tipo di istanza che supporti i Capacity Blocks (ad esempio:p5.48xlarge)

    • SecurityGroupIdsimpostato su quello applicabile IDs (ad esempio:sg-05b1d815d1EXAMPLE)

    • UserDataimpostato su quello applicabile user-data per il gruppo di nodi autogestito

      Di seguito è riportato un estratto di un CloudFormation modello che crea un modello di lancio destinato a un Capacity Block.

      NodeLaunchTemplate: Type: "aws::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" IamInstanceProfile: Arn: iam-instance-profile-arn ImageId: image-id InstanceType: p5.48xlarge KeyName: key-name SecurityGroupIds: - sg-05b1d815d1EXAMPLE UserData: user-data

      Devi trasmettere la sottorete nella zona di disponibilità in cui viene effettuata la prenotazione, perché i blocchi di capacità sono zonali.

  2. Utilizza il modello di avvio per creare un gruppo di nodi autogestito. Se lo stai facendo prima che la prenotazione della capacità diventi attiva, imposta la capacità 0 desiderata su. Quando crei il gruppo di nodi, assicurati di specificare solo la rispettiva sottorete per la zona di disponibilità in cui è la capacità è riservata.

    Di seguito è riportato un CloudFormation modello di esempio a cui puoi fare riferimento quando ne crei uno applicabile al tuo carico di lavoro. Questo esempio ottiene LaunchTemplateId l'aiuto Version della AWS::Amazon EC2::LaunchTemplate risorsa mostrata nel passaggio precedente. Ottiene anche i valori di DesiredCapacity, MaxSize, MinSize e VPCZoneIdentifier che sono dichiarati altrove nello stesso modello.

    NodeGroup: Type: "AWS::AutoScaling::AutoScalingGroup" Properties: DesiredCapacity: !Ref NodeAutoScalingGroupDesiredCapacity LaunchTemplate: LaunchTemplateId: !Ref NodeLaunchTemplate Version: !GetAtt NodeLaunchTemplate.LatestVersionNumber MaxSize: !Ref NodeAutoScalingGroupMaxSize MinSize: !Ref NodeAutoScalingGroupMinSize VPCZoneIdentifier: !Ref Subnets Tags: - Key: Name PropagateAtLaunch: true Value: !Sub ${ClusterName}-${NodeGroupName}-Node - Key: !Sub kubernetes.io/cluster/${ClusterName} PropagateAtLaunch: true Value: owned
  3. Una volta che il gruppo di nodi è stato creato, assicurati di registrare il valore NodeInstanceRole per il gruppo di nodi creato. Ne hai bisogno per assicurarti che quando il gruppo di nodi viene ridimensionato, i nuovi nodi si uniscano al cluster e Kubernetes è in grado di riconoscere i nodi. Per ulteriori informazioni, consulta le AWS Management Console istruzioni in Creare nodi Amazon Linux autogestiti.

  4. Consigliamo di creare una policy di dimensionamento programmato per il gruppo con dimensionamento automatico che si allinei ai tempi di prenotazione dei blocchi di capacità. Per ulteriori informazioni, consulta Scheduled Scaling for Amazon EC2 Auto Scaling nella Amazon Auto EC2 Scaling User Guide.

    Puoi utilizzare tutte le istanze prenotate fino a 30 minuti prima dell'orario di fine del blocco di capacità. Le istanze ancora in esecuzione in quel momento inizieranno a terminare. Per avere tempo sufficiente per svuotare correttamente i nodi, suggeriamo di pianificare il dimensionamento fino a zero più di 30 minuti prima dell'orario di fine della prenotazione del blocco di capacità.

    Se desideri invece aumentare manualmente la capacità ogni volta che viene effettuata la prenotazione di capacitàActive, devi aggiornare la capacità desiderata del gruppo Auto Scaling all'inizio della prenotazione del Blocco di capacità. Successivamente, dovrai anche ridurre le dimensioni manualmente più di 30 minuti prima dell'orario di fine della prenotazione del blocco di capacità.

  5. Il gruppo di nodi è ora pronto per i carichi di lavoro e Pods da programmare.

  6. In ordine per il tuo Pods per essere svuotato correttamente, ti consigliamo di configurare AWS Node Termination Handler. Questo gestore sarà in grado di controllare gli eventi del ciclo di vita «ASG Scale-in» di Amazon Auto EC2 Scaling utilizzando e consentire il EventBridge Kubernetes piano di controllo per intraprendere l'azione richiesta prima che l'istanza diventi non disponibile. Altrimenti, il tuo Pods e Kubernetes gli oggetti rimarranno bloccati in uno stato sospeso. Per ulteriori informazioni, vedere AWS Node Termination Handler su. GitHub

    Se non configuri un Node Termination Handler, ti consigliamo di iniziare a scaricare il tuo Pods manualmente prima di raggiungere la finestra di 30 minuti in modo che abbiano abbastanza tempo per essere svuotati con grazia.