ML용 용량 블록을 사용하여 관리형 노드 그룹 생성 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

ML용 용량 블록을 사용하여 관리형 노드 그룹 생성

기계 학습용 용량 블록(ML)을 사용하면 향후 날짜에 GPU 인스턴스를 예약하여 단기간의 ML 워크로드를 지원할 수 있습니다. 자세한 내용을 알아보려면 Amazon EC2 - Linux 인스턴스용 사용 설명서의 ML용 용량 블록을 참조하세요.

고려 사항

중요
  • 용량 블록은 특정 Amazon EC2 인스턴스 유형 및 AWS 리전에서만 사용할 수 있습니다. 호환성 정보는 Amazon EC2 - Linux 인스턴스용 사용 설명서의 용량 블록 작업 사전 조건을 참조하세요.

  • 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서Use Capacity Blocks for machine learning workloads를 참조하세요.

  • 용량 블록이 있는 관리형 노드 그룹은 사용자 지정 시작 템플릿을 통해서만 생성할 수 있습니다.

  • 용량 블록으로 관리되는 노드 그룹을 업그레이드할 때는 원하는 노드 그룹 크기가 0으로 설정되어 있는지 확인하세요.

Amazon EC2 용량 블록을 사용하여 관리형 노드 그룹 생성

GPU 가속화 워커 노드를 프로비저닝하고 규모를 조정하기 위해 Amazon EKS 관리형 노드 그룹과 함께 용량 블록을 사용할 수 있습니다. AWS CloudFormation 템플릿 예제에서는 프로덕션 클러스터에 필요한 모든 측면을 다루지는 않습니다. 일반적으로 노드를 클러스터에 조인하고 Amazon EKS 가속 AMI를 지정하기 위한 부트스트래핑 스크립트도 필요합니다. 자세한 내용은 클러스터에 대한 관리형 노드 그룹 생성 단원을 참조하십시오.

  1. 워크로드에 적합하고 Amazon EKS 관리형 노드 그룹과 작동하는 시작 템플릿을 생성합니다. 자세한 내용은 시작 템플릿을 사용한 관리형 노드 사용자 지정 단원을 참조하십시오.

    위 절차의 요구 사항 외에도 LaunchTemplateData에 다음 사항이 포함되어 있는지 확인합니다.

    • MarketType"capacity-block"로 설정한 InstanceMarketOptions

    • CapacityReservationId가 용량 블록으로 설정된 CapacityReservationSpecification: CapacityReservationTarget(예: cr-02168da1478b509e0)

    • InstanceType이 용량 블록을 지원하는 인스턴스 유형으로 설정(예: p5.48xlarge)

    다음은 용량 블록을 대상으로 하는 시작 템플릿을 생성하는 CloudFormation 템플릿의 발췌문입니다. 사용자 지정 AMI 관리형 노드 그룹을 생성하려면 ImageIdUserData 파라미터를 추가할 수 있습니다.

    NodeLaunchTemplate: Type: "AWS::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" InstanceType: p5.48xlarge
  2. 시작 템플릿을 사용하여 관리형 노드 그룹을 생성합니다.

    다음은 용량 블록에 대한 노드 그룹 생성 명령의 예입니다. example-values를 클러스터에 해당하는 것으로 변경합니다.

    용량 블록 관리형 노드 그룹을 생성하는 경우 다음을 수행합니다.

    • capacity-type"CAPACITY_BLOCK"로 설정합니다. 용량 유형이 "CAPACITY_BLOCK"으로 설정되지 않았거나 위의 필수 시작 템플릿 값 중 하나라도 누락된 경우 생성 요청이 거부됩니다.

    • 생성 요청에서 subnets를 지정할 때는 용량 예약과 동일한 가용 영역의 서브넷만 지정해야 합니다.

    • 생성 요청에 0이 아닌 desiredSize를 지정하면 Amazon EKS는 Auto Scaling 그룹(ASG)을 생성할 때 이를 따릅니다. 그러나 용량 예약이 활성화되기 전에 생성 요청이 이루어지면 ASG는 활성화될 때까지 Amazon EC2 인스턴스를 시작할 수 없습니다. 결과적으로 ASG 규모 조정 활동에서 시작 오류가 발생합니다. 예약이 활성화될 때마다 인스턴스 실행이 성공하고 ASG가 생성 시 언급된 desiredSize까지 스케일 업합니다.

    aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-mng \ --node-role node-role-arn \ --region region-code \ --subnets subnet-id \ --scaling-config minSize=node-group-min-size,maxSize=node-group-max-size,desiredSize=node-group-desired-size \ --capacity-type "CAPACITY_BLOCK" \ --launch-template id="lt-id",version=1
  3. 스케일 업 후 노드가 조인되었는지 확인합니다. 용량 블록이 있는 관리형 노드 그룹을 사용하는 Amazon EKS 클러스터는 시작된 인스턴스가 실제로 클러스터에 조인하고 등록되는지 확인하는 검증을 수행하지 않습니다.

  4. 생성 시 desiredSize0으로 설정한 경우 용량 예약이 활성화되면 노드 그룹을 스케일 업할 수 있는 다양한 옵션이 있습니다.

    • 용량 블록 예약 시작 시간에 맞춰 ASG에 대한 예약된 규모 조정 정책을 생성합니다. 자세한 정보는 Amazon EC2 Auto Scaling 사용 설명서의 Amazon EC2 Auto Scaling 예정 스케일링을 참조하세요.

    • Amazon EKS 콘솔 또는 eks update-nodegroup-config를 사용하여 규모 조정 구성을 업데이트하고 원하는 노드 그룹 크기를 설정합니다.

    • Kubernetes Cluster Autoscaler를 사용합니다. 자세한 내용은 AWS의 Cluster Autoscaler를 참조하십시오.

  5. 노드 그룹은 이제 워크로드와 Pods을(를) 처리할 준비가 되었으며 일정을 계획할 수 있습니다.

  6. 예약이 종료되기 전에 Pods가 원활하게 드레이닝될 수 있도록 Amazon EKS는 예약된 규모 조정 정책을 사용하여 노드 그룹 크기를 0으로 스케일 다운합니다. 이 예약된 규모 조정은 Amazon EKS Node Group Capacity Scaledown Before Reservation End라는 이름으로 설정됩니다. 이 작업을 편집하거나 삭제하지 않는 것이 좋습니다.

    Amazon EC2는 예약 종료 시간 30분 전에 인스턴스를 종료하기 시작합니다. 결과적으로 Amazon EKS는 Pods를 안전하고 원활하게 제거하기 위해 예약 종료 40분 전에 노드 그룹에 예약된 스케일 다운을 설정합니다.