이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
EKS Auto Mode를 사용하여 용량 예약으로 워크로드 배포 제어
용량 예약으로 워크로드 배포를 제어할 수 있습니다. EKS Auto Mode는 EC2 온디맨드 용량 예약(ODCR) 및 ML용 EC2 용량 블록을 지원합니다.
작은 정보
기본적으로 EKS Auto Mode는 개방형 ODCR 및 ML 용량 블록으로 자동 시작됩니다. NodeClass 정의에서 capacityReservationSelectorTerms를 사용하는 경우 EKS Auto Mode는 더 이상 개방형 용량 예약을 자동으로 사용하지 않습니다.
EC2 온디맨드 용량 예약(ODCR)
EC2 온디맨드 용량 예약(ODCR)을 사용하면 특정 가용 영역의 Amazon EC2 인스턴스에 대해 원하는 기간만큼 컴퓨팅 용량을 예약할 수 있습니다. EKS 자동 모드를 사용하는 경우 사전 구매한 용량의 사용률을 극대화하거나 중요한 워크로드가 보장된 리소스에 액세스할 수 있도록 Kubernetes 워크로드를 이러한 예약 인스턴스에 배포할지 여부를 제어할 수 있습니다.
기본적으로 EKS 자동 모드는 개방형 ODCR로 자동 시작됩니다. 그러나 NodeClass에서 capacityReservationSelectorTerms를 구성하여 워크로드에서 사용하는 ODCR을 명시적으로 제어할 수 있습니다. 구성된 ODCR을 사용하여 프로비저닝된 노드는 karpenter.sh/capacity-type: reserved를 가지며 온디맨드와 스팟보다 우선순위가 높습니다. 이 기능이 활성화되면 EKS 자동 모드는 더 이상 개방형 ODCR을 자동으로 사용하지 않습니다. NodeClass에서 ODCR을 명시적으로 선택해야 하므로 클러스터 전체에서 용량 예약 사용량을 정확하게 제어할 수 있습니다.
주의
클러스터의 NodeClass에서 capacityReservationSelectorTerms를 구성하는 경우 EKS 자동 모드는 더 이상 클러스터의 모든 NodeClass에 대해 개방형 ODCR을 자동으로 사용하지 않습니다.
NodeClass 예제
apiVersion: eks.amazonaws.com/v1 kind: NodeClass spec: # Optional: Selects upon on-demand capacity reservations and capacity blocks # for EKS Auto Mode to prioritize. capacityReservationSelectorTerms: - id: cr-56fac701cc1951b03 # Alternative Approaches - tags: app: "my-app" # Optional owning account ID filter owner: "012345678901"
이 예제 NodeClass는 ODCR을 선택하는 두 가지 접근 방식을 보여줍니다. 첫 번째 방법은 ID(cr-56fac701cc1951b03)로 특정 ODCR을 직접 참조합니다. 두 번째 방법은 태그 기반 선택을 사용하여 Name: "targeted-odcr" 태그가 있는 ODCR을 대상으로 합니다. 예약을 소유한 AWS 계정으로 필터링할 수도 있는데, 이는 특히 여러 계정이 관련된 시나리오나 공유 용량 예약을 처리할 때 유용합니다.
ML용 EC2 용량 블록 사용
ML용 용량 블록은 향후 날짜에 GPU 기반 가속 컴퓨팅 인스턴스를 예약하여 단기간의 기계 학습(ML) 워크로드를 지원합니다. 용량 블록 내부에서 실행되는 인스턴스는 지연 시간이 짧은 페타비트 규모의 비차단 네트워킹을 위해 Amazon EC2 UltraClusters 내부에 자동으로 서로 가깝게 배치됩니다.
지원되는 플랫폼 및 인스턴스 유형에 대한 자세한 내용은 EC2 사용 설명서의 ML용 용량 블록을 참조하세요.
ODCR(앞에서 설명)과 마찬가지로 ML용 용량 블록을 사용하는 EKS Auto Mode NodeClass를 생성할 수 있습니다.
다음 샘플 정의에서는 세 가지 리소스를 생성합니다.
-
용량 블록 예약을 참조하는 NodeClass
-
NodeClass를 사용하고 테인트를 적용하는 NodePool
-
테인트를 허용하고 GPU 리소스를 요청하는 포드 사양
NodeClass 예제
이 NodeClass는 예약 ID로 ML용 특정 용량 블록을 참조합니다. EC2 콘솔에서 이 ID를 얻을 수 있습니다.
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: gpu spec: # Specify your Capacity Block reservation ID capacityReservationSelectorTerms: - id: cr-56fac701cc1951b03
자세한 내용은 Amazon EKS용 노드 클래스 생성 섹션을 참조하세요.
NodePool 예제
이 NodePool은 gpu NodeClass를 참조하고 중요한 구성을 지정합니다.
-
karpenter.sh/capacity-type: reserved를 설정하여 예약 용량만 사용함 -
ML 워크로드에 적합한 특정 GPU 인스턴스 패밀리를 요청함
-
이러한 노드에 GPU 워크로드만 예약되도록
nvidia.com/gpu테인트를 적용함
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu spec: template: spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: gpu requirements: - key: eks.amazonaws.com/instance-family operator: In values: - g6 - p4d - p4de - p5 - p5e - p5en - p6 - p6-b200 - key: karpenter.sh/capacity-type operator: In values: - reserved # Enable other capacity types # - on-demand # - spot taints: - effect: NoSchedule key: nvidia.com/gpu
자세한 내용은 EKS Auto Mode용 노드 풀 생성 섹션을 참조하세요.
포드 예제
이 포드 예제는 용량 블록 노드에서 실행하도록 워크로드를 구성하는 방법을 보여줍니다.
-
nodeSelector를 사용하여 특정 GPU 유형(이 경우 H200 GPUs)을 대상으로 지정함
-
여기에는 NodePool에서 적용하는
nvidia.com/gpu테인트에 대한 허용치가 포함됨 -
nvidia.com/gpu리소스 유형을 사용하여 명시적으로 GPU 리소스를 요청함
apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: nodeSelector: # Select specific GPU type - uncomment as needed # eks.amazonaws.com/instance-gpu-name: l4 # eks.amazonaws.com/instance-gpu-name: a100 eks.amazonaws.com/instance-gpu-name: h200 # eks.amazonaws.com/instance-gpu-name: b200 eks.amazonaws.com/compute-type: auto restartPolicy: OnFailure containers: - name: nvidia-smi image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal args: - "nvidia-smi" resources: requests: # Uncomment if needed # memory: "30Gi" # cpu: "3500m" nvidia.com/gpu: 1 limits: # Uncomment if needed # memory: "30Gi" nvidia.com/gpu: 1 tolerations: - key: nvidia.com/gpu effect: NoSchedule operator: Exists
자세한 내용은 Kubernetes 문서의 포드
관련 리소스
-
Amazon EC2 사용 설명서의 ML용 용량 블록
-
Amazon EC2 사용 설명서의 용량 블록 찾기 및 구매
-
EKS 모범 사례 가이드의 GPU 리소스 최적화 및 비용 관리