기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
노드를 수동으로 격리, 교체 또는
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.amazonaws.com/node-health-status=UnschedulablePendingReplacement로 교체할 노드에 레이블을 지정합니다. 클러스터 생성 또는 업데이트 중에도 자동 노드 복구를 활성화해야 합니다.
kubectl label nodes<node-name>\ sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement
kubectl을 사용하여 노드를 재부팅하려면
SageMaker HyperPod 자동 노드 복구를 트리거하며 재부팅할 노드에 sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot로 레이블을 지정합니다. 클러스터 생성 또는 업데이트 중에도 자동 노드 복구를 활성화해야 합니다.
kubectl label nodes <node-name> \ sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot
레이블 UnschedulablePendingReplacement 또는를 UnschedulablePendingReboot 적용한 후 몇 분 내에 노드가 종료되거나 재부팅되는 것을 확인할 수 있습니다.