

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 手動隔離、取代或重新啟動節點
<a name="sagemaker-hyperpod-eks-resiliency-manual"></a>

了解如何在與 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 叢集，`BatchReplaceClusterNodes`API 不保證將建立替代節點。指定的節點*將*終止，但替換取決於 Karpenter 的 pod-demand-based佈建模型。Karpenter 只有在 Pod 處於無法排程於現有節點`Pending`的狀態時，才會建立新的節點。  
如果來自已刪除節點的工作負載可以重新排程到叢集中的剩餘節點 （例如，如果這些節點有足夠的容量），Karpenter 不會佈建替換。若要確保已建立替換節點，請確認您的工作負載組態 （例如 Pod 反親和性規則或資源請求） 需要取代 Pod 的新節點。  
我們了解此限制，並正在積極開發解決方案，以在透過 API 請求時強制執行節點替換。

**使用 kubectl 取代節點**

使用 `sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement` 標記要取代的節點，這會觸發 SageMaker HyperPod [自動節點復原](sagemaker-hyperpod-eks-resiliency-node-recovery.md)。請注意，您也需要在叢集建立或更新期間啟用自動節點復原。

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

**使用 kubectl 重新啟動節點**

使用 `sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot` 標記要重新啟動的節點，這會觸發 SageMaker HyperPod [自動節點復原](sagemaker-hyperpod-eks-resiliency-node-recovery.md)。請注意，您也需要在叢集建立或更新期間啟用自動節點復原。

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

套用標籤`UnschedulablePendingReplacement`或 `UnschedulablePendingReboot` 之後，您應該能夠看到節點在幾分鐘內終止或重新啟動。