

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 노드를 수동으로 격리, 교체 또는
<a name="sagemaker-hyperpod-eks-resiliency-manual"></a>

Amazon EKS로 오케스트레이션된 SageMaker HyperPod 클러스터에서 결함이 있는 노드를 수동으로 격리, 교체 및 재부팅하는 방법을 알아봅니다.

**노드를 격리하고 훈련 포드를 강제 삭제하려면**

```
kubectl cordon {{<node-name>}}
```

격리 후 포드를 강제로 배출합니다. 포드가 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는 기존 노드에서 예약할 수 없는 `Pending` 상태의 포드가 있는 경우에만 새 노드를 생성합니다.  
삭제된 노드의 워크로드를 클러스터의 나머지 노드로 다시 예약할 수 있는 경우(예: 해당 노드의 용량이 충분한 경우) Karpenter는 대체 노드를 프로비저닝하지 않습니다. 대체 노드를 생성하려면 워크로드 구성(예: 포드 친화도 방지 규칙 또는 리소스 요청)에 대체된 포드에 대한 새 노드가 필요한지 확인합니다.  
이 제한 사항을 알고 있으며 API를 통해 요청 시 노드 교체를 적용하는 솔루션을 적극적으로 개발하고 있습니다.

**kubectl을 사용하여 노드를 교체하려면**

SageMaker HyperPod [자동 노드 복구](sagemaker-hyperpod-eks-resiliency-node-recovery.md)를 트리거하는 `sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement`로 교체할 노드에 레이블을 지정합니다. 클러스터 생성 또는 업데이트 중에도 자동 노드 복구를 활성화해야 합니다.

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

**kubectl을 사용하여 노드를 재부팅하려면**

SageMaker HyperPod [자동 노드 복구](sagemaker-hyperpod-eks-resiliency-node-recovery.md)를 트리거하며 재부팅할 노드에 `sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot`로 레이블을 지정합니다. 클러스터 생성 또는 업데이트 중에도 자동 노드 복구를 활성화해야 합니다.

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

레이블 `UnschedulablePendingReplacement` 또는를 `UnschedulablePendingReboot` 적용한 후 몇 분 내에 노드가 종료되거나 재부팅되는 것을 확인할 수 있습니다.