Erstellen Sie selbstverwaltete Knoten mit Capacity Blocks for ML - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie selbstverwaltete Knoten mit Capacity Blocks for ML

Mit Kapazitätsblöcken für maschinelles Lernen (ML) können Sie GPU Instanzen zu einem future Zeitpunkt reservieren, um Ihre ML-Workloads mit kurzer Dauer zu unterstützen. Weitere Informationen finden Sie unter Capacity Blocks for ML im EC2Amazon-Benutzerhandbuch für Linux-Instances.

Überlegungen

Wichtig
  • Kapazitätsblöcke sind nur für bestimmte EC2 Amazon-Instance-Typen und AWS Regionen verfügbar. Informationen zur Kompatibilität finden Sie unter Voraussetzungen für das Arbeiten mit Kapazitätsblöcken im EC2Amazon-Benutzerhandbuch für Linux-Instances.

  • Kapazitätsblöcke können derzeit nicht verwendet werden mit Karpenter.

  • Wenn Sie eine selbstverwaltete Knotengruppe erstellen, bevor die Kapazitätsreservierung aktiv wird, legen Sie die gewünschte Kapazität auf 0 fest.

  • Um genügend Zeit zu haben, den/die Knoten ordnungsgemäß zu entleeren, empfehlen wir, die Skalierung so zu planen, dass sie mehr als 30 Minuten vor der Endzeit der Kapazitätsblock-Reservierung auf Null skaliert.

  • In der Reihenfolge Ihrer Pods Damit das System ordnungsgemäß entleert wird, empfehlen wir Ihnen, AWS Node Termination Handler so einzurichten, wie in den Beispielschritten beschrieben.

Verwenden Sie Capacity Blocks mit selbstverwalteten Knoten

Sie können Capacity Blocks mit Amazon EKS für die Bereitstellung und Skalierung Ihrer selbstverwalteten Knoten verwenden. Die folgenden Schritte geben einen allgemeinen Beispielüberblick. Die AWS CloudFormation Vorlagenbeispiele decken nicht alle Aspekte ab, die für einen Produktions-Workload erforderlich sind. In der Regel benötigen Sie auch ein Bootstrapping-Skript, um den Knoten mit dem Cluster zu verbinden, den EKS AMI Amazon-Beschleunigungsmodus und ein geeignetes Instance-Profil für den Beitritt zum Cluster anzugeben. Weitere Informationen finden Sie unter Erstellen Sie selbstverwaltete Amazon Linux-Knoten.

  1. Erstellen Sie eine Startvorlage, die für Ihren Workload geeignet ist. Weitere Informationen finden Sie unter Verwenden von Kapazitätsblöcken für maschinelles Lernen im Amazon EC2 Auto Scaling Scaling-Benutzerhandbuch.

    Stellen Sie sicher, dass LaunchTemplateData dies Folgendes beinhaltet:

    • InstanceMarketOptions mit der Einstellung "capacity-block" für MarketType

    • CapacityReservationSpecification: CapacityReservationTargetmit CapacityReservationId Einstellung auf den Capacity-Block (zum Beispiel:cr-02168da1478b509e0 )

    • IamInstanceProfilemit dem Arn Satz auf den zutreffenden iam-instance-profile-arn

    • ImageIdauf das Zutreffende setzen image-id

    • InstanceTypeauf einen Instance-Typ gesetzt, der Capacity Blocks unterstützt (zum Beispiel: p5.48xlarge)

    • SecurityGroupIdsauf den zutreffenden Wert gesetzt IDs (zum Beispiel: sg-05b1d815d1EXAMPLE)

    • UserDataauf das Zutreffende setzen user-data für Ihre selbstverwaltete Knotengruppe

      Im Folgenden finden Sie einen Auszug aus einer CloudFormation Vorlage, mit der eine Startvorlage für einen Kapazitätsblock erstellt wird.

      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

      Sie müssen das Subnetz in der Availability Zone übergeben, in der die Reservierung vorgenommen wurde, da Kapazitätsblöcke zonal sind.

  2. Verwenden Sie die Startvorlage, um eine selbstverwaltete Knotengruppe zu erstellen. Wenn Sie dies tun, bevor die Kapazitätsreservierung aktiv wird, setzen Sie die gewünschte Kapazität auf0. Achten Sie beim Erstellen der Knotengruppe darauf, dass Sie nur das entsprechende Subnetz für die Availability Zone angeben, in der die Kapazität reserviert ist.

    Im Folgenden finden Sie eine CloudFormation Beispielvorlage, auf die Sie zurückgreifen können, wenn Sie eine Vorlage erstellen, die für Ihren Workload geeignet ist. In diesem Beispiel wird das LaunchTemplateId Ende Version der AWS::Amazon EC2::LaunchTemplate Ressource abgerufen, die im vorherigen Schritt angezeigt wurde. Sie erhält auch die Werte für DesiredCapacity, MaxSize, MinSize, und VPCZoneIdentifier, die an anderer Stelle in derselben Vorlage deklariert sind.

    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. Nachdem die Knotengruppe erfolgreich erstellt wurde, stellen Sie sicher, dass Sie die NodeInstanceRole für die Knotengruppe aufzeichnen, die erstellt wurde. Sie benötigen dies, um sicherzustellen, dass bei der Skalierung der Knotengruppe die neuen Knoten dem Cluster beitreten und Kubernetes ist in der Lage, die Knoten zu erkennen. Weitere Informationen finden Sie in den AWS Management Console Anweisungen unter Selbstverwaltete Amazon Linux-Knoten erstellen.

  4. Wir empfehlen Ihnen, eine geplante Skalierungsrichtlinie für die Auto-Scaling-Gruppe zu erstellen, die sich an den Reservierungszeiten für Kapazitätsblöcke orientiert. Weitere Informationen finden Sie unter Geplante Skalierung für Amazon EC2 Auto Scaling im Amazon EC2 Auto Scaling Scaling-Benutzerhandbuch.

    Sie können alle von Ihnen reservierten Instances bis 30 Minuten vor Ablauf der Endzeit des Kapazitätsblocks verwenden. Instances, die zu diesem Zeitpunkt noch laufen, werden beendet. Um genügend Zeit zu haben, den/die Knoten ordnungsgemäß zu entleeren, empfehlen wir, die Skalierung so zu planen, dass sie mehr als 30 Minuten vor der Endzeit der Kapazitätsblock-Reservierung auf Null skaliert.

    Wenn Sie stattdessen manuell skalieren möchten, wann immer die Kapazitätsreservierung erfolgtActive, müssen Sie die gewünschte Kapazität der Auto Scaling Scaling-Gruppe zum Startzeitpunkt der Kapazitätsblockreservierung aktualisieren. Dann müssten Sie auch mehr als 30 Minuten vor dem Ende der Kapazitätsblock-Reservierung manuell herunterskalieren.

  5. Die Knotengruppe ist jetzt bereit für Workloads und Pods muss geplant werden.

  6. Damit dein Pods Um ordnungsgemäß entleert zu werden, empfehlen wir Ihnen, AWS Node Termination Handler einzurichten. Dieser Handler wird in der Lage sein, auf „ASGScale-In“ -Lebenszyklusereignisse von Amazon EC2 Auto Scaling zu achten EventBridge und die Kubernetes Kontrollebene, um die erforderlichen Maßnahmen zu ergreifen, bevor die Instance nicht mehr verfügbar ist. Andernfalls ist Ihr Pods and Kubernetes Objekte bleiben im Status „Ausstehend“ hängen. Weitere Informationen finden Sie unter AWS Node Termination Handler on GitHub.

    Wenn Sie keinen Node Termination Handler einrichten, empfehlen wir Ihnen, mit der Entleerung Ihres Pods manuell, bevor Sie das 30-Minuten-Zeitfenster erreichen, damit sie genügend Zeit haben, um ordnungsgemäß entleert zu werden.