帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
创建带适用于机器学习的容量块的托管式节点组
机器学习(ML)容量块允许您在未来某个日期预留 GPU 实例,从而支持您的短期 ML 工作负载。有关更多信息,请参阅《Amazon EC2 用户指南(适用于 Linux 实例)》中的适用于 ML 的容量块。
注意事项
重要
-
容量块仅适用于某些 Amazon EC2 实例类型和 Amazon Web Services 区域。有关兼容性信息,请参阅《Amazon EC2 用户指南(适用于 Linux 实例)》中的使用容量块。
-
有关更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的将容量块用于机器学习工作负载。
-
带有容量块的托管式节点组只能使用自定义启动模板创建。
-
升级带有容量块的托管式节点组时,请务必将所需的节点组大小设置为
0
。
创建带有 Amazon EC2 容量块的托管式节点组
您可以将容量块与 Amazon EKS 托管式节点组配合使用来预置和扩展由 GPU 加速的 Worker 节点。下面的 Amazon CloudFormation 模板示例并未涵盖生产集群所需的各个方面。通常,您还需要一个引导脚本来将节点加入集群,并指定由 Amazon EKS 加速的 AMI。有关更多信息,请参阅 为集群创建托管式节点组。
-
创建适合工作负载并且可与 Amazon EKS 托管式节点组配合使用的启动模板。有关更多信息,请参阅 使用启动模板自定义托管式节点。
除了上述过程中的要求外,还要确保
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
-
-
使用启动模板创建托管式节点组。
以下是容量块的创建节点组命令示例。请将
替换为适用于集群的相应值。example-values
创建容量块托管式节点组时,请执行以下操作:
-
将
capacity-type
设置为"CAPACITY_BLOCK"
。如果容量类型未设置为"CAPACITY_BLOCK"
或者缺失上述任何其他必需的启动模板值,则创建请求将被拒绝。 -
在创建请求中指定
subnets
时,请确保仅在与容量预留相同的可用区中指定子网。 -
如果在创建请求中指定某个非零
desiredSize
,Amazon EKS 将在创建自动扩缩组(ASG)时遵守该值。但是,如果创建请求是在容量预留激活之前发出的,则在容量预留处于活动状态之前,ASG 将无法启动 Amazon EC2 实例。这样,ASG 扩缩活动将出现启动错误。每当预留变为活动状态时,实例将会成功启动,并且 ASG 将纵向扩展至创建时提到的desiredSize
。
aws eks create-nodegroup \ --cluster-name
my-cluster
\ --nodegroup-namemy-mng
\ --node-rolenode-role-arn
\ --regionregion-code
\ --subnets subnet-id
\ --scaling-config minSize=node-group-min-size
,maxSize=node-group-max-size
,desiredSize=node-group-desired-size
\ --capacity-type "CAPACITY_BLOCK" \ --launch-template id="lt-id
",version=1
-
-
请确保节点在纵向扩展后加入。使用带容量块的托管式节点组时,Amazon EKS 集群不会验证启动的实例确实已经加入并注册到集群。
-
如果您在创建时将
desiredSize
设置为0
,则在容量预留变为活动状态时,您可通过不同的选项来纵向扩展节点组:-
为 ASG 创建与容量块预留时间保持一致的计划扩缩策略。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 Amazon EC2 Auto Scaling 的计划扩展。
-
使用 Amazon EKS 控制台或
eks update-nodegroup-config
更新扩缩配置并设置所需的节点组大小。 -
使用 Kubernetes Cluster Autoscaler。有关更多信息,请参阅 Amazon 上的 Cluster Autoscaler
。
-
-
节点组现在已准备好计划工作负载和 Pods。
-
为确保能够在预留结束之前正常耗尽 Pods,Amazon EKS 使用计划扩缩策略将节点组大小缩减到
0
。此计划扩缩策略的名称将设置为Amazon EKS Node Group Capacity Scaledown Before Reservation End
。我们建议不要编辑或删除此操作。Amazon EC2 会在预留结束前 30 分钟开始关闭实例。因此,Amazon EKS 将在预留结束前 40 分钟设置节点组计划缩减,以便确保能够安全、正常地退出 Pods。