노드를 수동으로 격리, 교체 또는 - Amazon SageMaker AI

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

노드를 수동으로 격리, 교체 또는

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 적용한 후 몇 분 내에 노드가 종료되거나 재부팅되는 것을 확인할 수 있습니다.