手动隔离、替换或重启节点 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

手动隔离、替换或重启节点

了解如何在 Amazon EKS 编排的 SageMaker HyperPod集群中手动隔离、替换和重启故障节点。

要隔离节点并强制删除训练容器组(pod)

kubectl cordon <node-name>

隔离后,强制弹出容器组(pod) 如果发现容器组(pod)在终止状态下停留超过 30 分钟,或者 kubectl describe pod 在事件中显示“节点未准备就绪”,就可以使用此功能。

kubectl delete pods <pod-name> --grace-period=0 --force

SageMaker HyperPod 提供了两种手动恢复节点的方法。首选方法是使用 R SageMaker HyperPod eboot and Replace APIs,它提供了更快、更透明的恢复流程,适用于所有协调器。或者,您可以使用 kubectl 命令标记节点以进行重启和替换操作。这两种方法都激活相同的 SageMaker HyperPod 恢复过程。

使用重启 API 重启节点

要重启节点,可以使用 BatchRebootClusterNodes API。

以下是使用以下方法在两个集群实例上运行重启操作的示例 Amazon Command Line Interface:

aws sagemaker batch-reboot-cluster-nodes \ --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \ --node-ids i-0123456789abcdef0 i-0fedcba9876543210

使用替换 API 替换节点

要替换节点,您可以按如下方式使用 BatchReplaceClusterNodes API

以下是使用以下方法对集群的两个实例运行替换操作的示例 Amazon Command Line Interface:

aws sagemaker batch-replace-cluster-nodes \ --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \ --node-ids i-0123456789abcdef0 i-0fedcba9876543210
Karpenter 管理的集群

对于使用 Karpenter 进行节点配置的 SageMaker HyperPod 集群,BatchReplaceClusterNodesAPI 不保证会创建替代节点。指定的节点将被终止,但替换将取决于 Karpenter 的 pod-demand-based配置模式。Karpenter 只有在存在无法在现有节点上调度的 Pod 时才会创建新节点。Pending

如果可以将已删除节点的工作负载重新调度到集群中的其余节点上(例如,如果这些节点有足够的容量),则 Karpenter 不会配置替代节点。为确保创建替换节点,请验证您的工作负载配置(例如 Pod 反关联性规则或资源请求)是否需要为移位的 Pod 使用新节点。

我们意识到这一限制,并且正在积极研究一种解决方案,以便在通过 API 提出请求时强制更换节点。

使用 kubectl 替换节点

标记要替换的节点sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement,这会触发 SageMaker HyperPod 自动节点恢复。请注意,您还需要在创建或更新集群时激活节点自动恢复功能。

kubectl label nodes <node-name> \ sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement

使用 kubectl 重启节点

标记要重启的节点sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot,这会触发 SageMaker HyperPod 自动节点恢复。请注意,您还需要在创建或更新集群时激活节点自动恢复功能。

kubectl label nodes <node-name> \ sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot

应用标签UnschedulablePendingReplacementUnschedulablePendingReboot后,您应该能够在几分钟内看到节点已终止或重新启动。