本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
手動隔離、取代或重新啟動節點
了解如何在與 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 提供兩種手動節點復原的方法。偏好的方法是使用 SageMaker HyperPod 重新啟動和取代 APIs,它提供更快速、更透明的復原程序,適用於所有協調器。或者,您可以使用 kubectl 命令來標記節點以重新啟動和取代操作。這兩種方法都會啟用相同的 SageMaker HyperPod 復原程序。
使用重新啟動 API 重新啟動節點
若要重新啟動節點,您可以使用 BatchRebootClusterNodes API。
以下是使用 在叢集的兩個執行個體上執行重新啟動操作的範例 AWS 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,如下所示
以下是使用 在叢集的兩個執行個體上執行取代操作的範例 AWS 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
套用標籤UnschedulablePendingReplacement或 UnschedulablePendingReboot 之後,您應該能夠看到節點在幾分鐘內終止或重新啟動。