帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
ML 容量块
重要
-
容量块仅适用于某些 Amazon EC2 实例类型和 Amazon Web Services 区域。有关兼容性信息,请参阅《Amazon EC2 用户指南(适用于 Linux 实例)》中的使用容量块。
-
容量块目前不支持 Amazon EKS 托管节点组或 Karpenter。
机器学习(ML)容量块允许您在未来某个日期预留 GPU 实例,从而支持您的短期 ML 工作负载。在容量块内运行的实例会自动在 Amazon EC2 UltraClusters
您可以将容量块与 Amazon EKS 配合使用来预置和扩展自己的自行管理节点。以下步骤给出了一般的示例概述。
-
在 Amazon Web Services Management Console 中创建启动模板。有关更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的将容量块用于机器学习工作负载。
请务必包括实例类型和 Amazon 系统映像(AMI)的配置。
-
使用容量预留 ID 将容量块链接到启动模板。
以下是针对容量块创建启动模板的示例 Amazon CloudFormation 模板:
NodeLaunchTemplate: Type: "Amazon::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 模板示例。此示例获取上一个示例中所显示
Amazon::Amazon EC2::LaunchTemplate
资源的LaunchTemplateId
和Version
。它还会获取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 能够识别节点。有关更多信息,请参阅 启动自行管理的 Amazon Linux 节点 中的 Amazon Web Services Management Console 说明。 -
我们建议您为 Auto Scaling 组创建与容量块预留时间保持一致的计划扩展策略。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 Amazon EC2 Auto Scaling 的计划扩展。
您可以在容量块结束时间前 30 分钟使用预留的所有实例。那时仍在运行的实例将开始终止。为了留出足够的时间来正常地耗尽节点,我们建议您在容量块预留结束时间前 30 分钟计划扩展至零。
如果您想改为在容量预留变为
Active
时手动纵向扩展,则需要在容量块预留开始时更新 Auto Scaling 组的所需容量。然后,您还需要在容量块预留结束前 30 多分钟手动缩减。 -
节点组现在已准备好计划工作负载和 Pods。
-
为了正常地耗尽您的 Pods,我们建议您设置 Amazon 节点终止处理程序。该处理程序将能够使用 EventBridge 监视来自 Amazon EC2 Auto Scaling 的“ASG 横向缩减”生命周期事件,并允许 Kubernetes 控制面板在实例不可用之前执行所需的操作。否则,您的 Pods 和 Kubernetes 对象将停留在待处理状态。有关更多信息,请参阅 GitHub 上的 Amazon 节点终止处理程序
。 如果您没有设置节点终止处理程序,我们建议您在到达 30 分钟时段之前开始手动耗尽 Pods,这样就有充足的时间正常地耗尽这些节点。