使用 ML 的容量區塊建立受管節點群組 - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

使用 ML 的容量區塊建立受管節點群組

機器學習 (ML) 的容量區塊可讓您指定未來日期保留 GPU 執行個體,以支援短期 ML 工作負載。如需詳細資訊,請參閱《適用於 Linux 執行個體 的 Amazon EC2 使用者指南》中 ML 的容量區塊

考量事項

重要
  • 容量區塊僅適用於特定 Amazon EC2 執行個體類型與 AWS 區域。如需相容性資訊,請參閱《Amazon EC2 Linux 執行個體使用者指南》中的使用容量區塊的先決條件

  • 如需詳細資訊,請參閱「Amazon EC2 Auto Scaling 使用者指南」使用容量區塊處理機器學習工作負載

  • 具有容量區塊的受管節點群組僅能使用自訂啟動範本建立。

  • 升級具有容量區塊的受管節點群組時,請確保節點群組的期望大小設定為 0

使用 Amazon EC2 容量區塊建立受管節點群組

您可以將容量區塊與 Amazon EKS 受管節點群組搭配使用,以佈建和擴展 GPU 加速的工作節點。以下的 AWS CloudFormation 範本範例並未涵蓋生產叢集所需的所有層面。通常,您還會需要一個啟動指令碼來將節點加入叢集,並指定一個 Amazon EKS 加速 AMI。如需詳細資訊,請參閱 建立叢集的受管節點群組

  1. 建立適合您工作負載並可與 Amazon EKS 受管節點群組配合使用的啟動範本。如需詳細資訊,請參閱 使用啟動範本自訂受管節點

    除了上述程序中的要求外,請確保 LaunchTemplateData 包含以下內容:

    • InstanceMarketOptions 並將 MarketType 設為 "capacity-block"

    • CapacityReservationSpecification: CapacityReservationTarget,其中 CapacityReservationId 設定為容量區塊 (例如:cr-02168da1478b509e0 )

    • InstanceType 設定為支援容量區塊的執行個體類型 (例如:p5.48xlarge)

      以下是建立以容量區塊為目標的啟動範本的 CloudFormation 範本摘錄。要建立自訂 AMI 受管節點群組,您還可以加入 ImageIdUserData 參數。

      NodeLaunchTemplate: Type: "AWS::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" InstanceType: p5.48xlarge
  2. 使用啟動範本來建立受管節點群組。

    下是針對容量區塊的建立節點群組命令範例。將範例值取代為適用於您叢集的值。

    建立容量區塊受管節點群組時,執行下列動作:

    • capacity-type 設定為 "CAPACITY_BLOCK"。如果容量類型未設定為 "CAPACITY_BLOCK",或者缺少上述任何其他必需的啟動範本值,則建立請求將被拒絕。

    • 在建立請求中指定 subnets 時,請確保僅指定與容量保留區位於相同可用區域的子網路。

    • 如果您在建立請求中指定了非零的 desiredSize,Amazon EKS 將在建立 Auto Scaling 群組 (ASG) 時遵循該值。但是,如果建立請求是在容量保留區生效之前發出的,則 ASG 將無法啟動 Amazon EC2 執行個體,直到保留區生效為止。因此,ASG 擴展活動將會出現啟動錯誤。一旦保留區生效,執行個體的啟動就會成功,並且 ASG 將擴展到建立時指定的 desiredSize

      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 \ --ami-type "AL2023_x86_64_NVIDIA" \ --capacity-type "CAPACITY_BLOCK" \ --launch-template id="lt-id",version=1
  3. 請確保節點在向上擴展後加入。使用具有容量區塊的受管節點群組的 Amazon EKS 叢集,不會驗證啟動的執行個體是否實際加入並向叢集註冊。

  4. 如果您在建立時將 desiredSize 設定為 0,那麼當容量保留區生效時,您有不同的選項來向上擴展節點群組:

    • 為 ASG 建立與容量區塊保留開始時間一致的排程擴展政策。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的為 Amazon EC2 Auto Scaling 排程擴展

    • 使用 Amazon EKS 主控台或 eks update-nodegroup-config 來更新擴展組態,並設定所需的節點群組大小。

    • 使用 Kubernetes Cluster Autoscaler。如需詳細資訊,請參閱 AWS 上的 Cluster Autoscaler

  5. 節點群組現在已準備就緒,可供工作負載和 Pod 進行排程。

  6. 為了在保留結束前優雅地排空您的 Pod,Amazon EKS 使用排程擴展政策將節點群組規模縮減至 0。此排程擴展將設定一個名為 Amazon EKS Node Group Capacity Scaledown Before Reservation End 的動作。我們建議不要編輯或刪除此動作。

    Amazon EC2 會在保留結束時間前的 30 分鐘開始關閉執行個體。因此,Amazon EKS 會在保留結束前的 40 分鐘於節點群組上設定排程縮減規模,以便安全且優雅地移出 Pod。