

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 ML 的容量區塊建立受管節點群組
<a name="capacity-blocks-mng"></a>

機器學習 (ML) 的容量區塊可讓您指定未來日期保留 GPU 執行個體，以支援短期 ML 工作負載。如需詳細資訊，請參閱《*適用於 Linux 執行個體 的 Amazon EC2 使用者指南*》中 [ML 的容量區塊](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html)。

## 考量事項
<a name="capacity-blocks-mng-considerations"></a>

**重要**  
容量區塊僅適用於特定 Amazon EC2 執行個體類型和 AWS 區域。如需相容性資訊，請參閱《*Amazon EC2 Linux 執行個體使用者指南*》中的[使用容量區塊的先決條件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-blocks-using.html#capacity-blocks-prerequisites)。
如需詳細資訊，請參閱「Amazon EC2 Auto Scaling 使用者指南」**的[使用容量區塊處理機器學習工作負載](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-template-capacity-blocks.html)。
具有容量區塊的受管節點群組僅能使用自訂啟動範本建立。
升級具有容量區塊的受管節點群組時，請確保節點群組的期望大小設定為 `0`。

## 使用 Amazon EC2 容量區塊建立受管節點群組
<a name="capacity-blocks-mng-procedure"></a>

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

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

   除了上述程序中的要求外，請確保 `LaunchTemplateData` 包含以下內容：
   +  `InstanceMarketOptions` 並將 `MarketType` 設為 `"capacity-block"` 
   +  `CapacityReservationSpecification: CapacityReservationTarget`，其中 `CapacityReservationId` 設定為容量區塊 (例如：`cr-{{02168da1478b509e0}} `)
   +  `InstanceType` 設定為支援容量區塊的執行個體類型 (例如：{{p5.48xlarge}})

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

     ```
     NodeLaunchTemplate:
       Type: "AWS::EC2::LaunchTemplate"
       Properties:
         LaunchTemplateData:
           InstanceMarketOptions:
             MarketType: "capacity-block"
           CapacityReservationSpecification:
             CapacityReservationTarget:
               CapacityReservationId: "cr-02168da1478b509e0"
           InstanceType: p5.48xlarge
     ```

1. 使用啟動範本來建立受管節點群組。

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

   建立容量區塊受管節點群組時，執行下列動作：
   + 將 `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
     ```

1. 請確保節點在向上擴展後加入。使用具有容量區塊的受管節點群組的 Amazon EKS 叢集，不會驗證啟動的執行個體是否實際加入並向叢集註冊。

1. 如果您在建立時將 `desiredSize` 設定為 `0`，那麼當容量保留區生效時，您有不同的選項來向上擴展節點群組：
   + 為 ASG 建立與容量區塊保留開始時間一致的排程擴展政策。如需詳細資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》**中的[為 Amazon EC2 Auto Scaling 排程擴展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html)。
   + 使用 Amazon EKS 主控台或 `eks update-nodegroup-config` 來更新擴展組態，並設定所需的節點群組大小。
   + 使用 Kubernetes Cluster Autoscaler。如需詳細資訊，請參閱 [Cluster Autoscaler on AWS](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)。

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

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

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