協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 ML 的容量區塊建立自我管理的節點
機器學習 (ML) 的容量區塊可讓您在 future 的日期預留GPU執行個體,以支援短時間 ML 工作負載。如需詳細資訊,請參閱 Amazon Linux 執行個體EC2使用者指南中的 ML 容量區塊。
考量事項
重要
-
容量區塊僅適用於特定 Amazon EC2 執行個體類型和 AWS 區域。如需相容性資訊,請參閱 Amazon Linux 執行個體EC2使用者指南中的使用容量區塊先決條件。
-
容量區塊目前無法搭配使用Karpenter。
-
如果您在容量保留變為作用中之前建立自我管理的節點群組,請將
0
所需的容量設定為。 -
為了能有足夠的時間正常耗盡節點,建議您在容量區塊保留結束前預留 30 分鐘以上,排程擴展至零。
-
為了使您的優雅排空,我們建議您按照示例Pods步驟中的說明設置 AWS 節點終止處理程序。
搭配自我管理節點使用容量區塊
您可以將容量區塊與 Amazon EKS 搭配使用來佈建和擴展您的自我管理節點。下列步驟提供一般範例概觀。範本 AWS CloudFormation 範例不涵蓋生產工作負載所需的每個層面。通常,您還希望啟動載入指令碼將節點加入叢集、指定 Amazon EKS 加速AMI,以及用於加入叢集的適當執行個體設定檔。如需詳細資訊,請參閱建立自我管理的 Amazon Linux 節點。
-
建立適用於工作負載的啟動範本。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南中的機器學習工作負載使用容量區塊。
確保
LaunchTemplateData
包括以下內容:-
InstanceMarketOptions
並將MarketType
設為"capacity-block"
-
CapacityReservationSpecification: CapacityReservationTarget
CapacityReservationId
設定為容量區塊 (例如:
)cr-02168da1478b509e0
-
IamInstanceProfile
與設Arn
置為適用的iam-instance-profile-arn
-
ImageId
設定為適用影像識別碼
-
InstanceType
設定為支援容量區塊的執行個體類型 (例如:
)p5.48xlarge
-
SecurityGroupIds
設定為適用的 IDs (例如:
)sg-05b1d815d1EXAMPLE
-
UserData
設定
為適用於您的自我管理節點群組user-data
以下是建立以容量區塊為 CloudFormation 目標的啟動範本的範本摘錄。
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
由於容量區塊為區域性,因此您必須在進行保留的可用區域中傳遞子網路。
-
-
使用啟動範本建立自我管理的節點群組。如果您在容量保留啟用之前執行此操作,請將所需的容量設定為
0
。建立節點群組時,請確定您只為保留容量的可用區域指定個別子網路。以下是建立適用於工作負載的 CloudFormation 範例範本時可參考的範例範本。此範例會取得上一個步驟中所示
AWS::Amazon EC2::LaunchTemplate
資源Version
的LaunchTemplateId
與。這個範例也會取得在相同範本中其他位置宣告的DesiredCapacity
、MaxSize
、MinSize
和VPCZoneIdentifier
值。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
-
成功建立節點群組之後,請務必記錄所建立節點群組的
NodeInstanceRole
。這麼做才能確保節點群組擴展時,新節點會加入叢集,且 Kubernetes 能夠識別節點。如需詳細資訊,請參閱中的 AWS Management Console 指示建立自我管理的 Amazon Linux 節點。 -
建議您根據容量區塊的保留時間,為 Auto Scaling 群組建立排程擴展政策。如需詳細資訊,請參閱 Amazon EC2 自動擴展使用者指南中的 Amazon EC2 Auto Scaling 的排程擴展。
在容量區塊結束時間的 30 分鐘前,您保留的所有執行個體都可以使用。屆時仍在執行的執行個體將會開始終止。為了能有足夠的時間正常耗盡節點,建議您在容量區塊保留結束前預留 30 分鐘以上,排程擴展至零。
如果您想要在容量保留變成
Active
時改為手動縱向擴展,則需要在容量區塊保留的開始時間更新 Auto Scaling 群組的所需容量。然後,您還需要在容量區塊保留結束前預留 30 分鐘以上手動縮減規模。 -
節點群組現在已準備就緒,可供工作負載和 Pods 進行排程。
-
為了Pods使您的正常排空,我們建議您設置 AWS 節點終止處理程序。此處理常式將能夠使用 Amazon Auto ASG Scaling 監視來自 Amazon EC2 Auto Scaling 的「擴展」生命週期事件, EventBridge並允許Kubernetes控制平面在執行個體無法使用之前採取必要的動作。否則,您的 Pods 和 Kubernetes 物件都會卡在待處理狀態。如需詳細資訊,請參閱上的AWS 節點終止處理常式
GitHub。 如果您未設定節點終止處理常式,建議您在接近 30 分鐘前開始手動耗盡 Pods,以便它們有足夠的時間正常耗盡。