View a markdown version of this page

Amazon EKS에서 하드웨어 디바이스 관리 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

Amazon EKS에서 하드웨어 디바이스 관리

Amazon EKS는 EKS 클러스터에서 특수 하드웨어 디바이스를 관리하기 위한 두 가지 Kubernetes 메커니즘(동적 리소스 할당(DRA)디바이스 플러그인)을 지원합니다. 두 메커니즘은 모두 워크로드에서 NVIDIA GPU 및 AWS Trainium 칩과 같은 하드웨어 액셀러레이터와 Elastic Fabric Adapter(EFA)와 같은 고성능 네트워크 디바이스에 액세스하도록 지원합니다. DRA는 디바이스 플러그인으로는 불가능한 보다 다양한 디바이스 선택 사항, 토폴로지 인식 스케줄링 및 디바이스 공유 기능을 제공하므로, EKS 관리형 노드 그룹 또는 자체 관리형 노드를 사용할 때 Kubernetes 버전 1.34 이상의 새 배포에 대해서는 DRA 드라이버를 사용하는 것이 좋습니다.

이 두 Kubernetes 기능에 대한 일반적인 정보는 동적 리소스 할당디바이스 플러그인에 대한 Kubernetes 설명서를 참조하세요.

동적 리소스 할당 및 디바이스 플러그인 비교

Kubernetes 디바이스 플러그인은 Kubernetes 워크로드에 특수 하드웨어를 노출하는 주요 메커니즘입니다. 디바이스 플러그인은 컨테이너 리소스 요청 및 제한에서 요청하는 확장 리소스(예: nvidia.com/gpu 또는 aws.amazon.com/neuroncore)로 디바이스를 알립니다. 디바이스 플러그인은 널리 지원되고 사용되지만 다음과 같은 제한 사항이 있습니다.

  • 디바이스는 속성 기반 필터링 없이 오파크 정수 개수로 요청됩니다.

  • 컨테이너 또는 포드 간 디바이스 공유는 지원되지 않습니다.

  • 여러 디바이스 유형에서 표현 기반 토폴로지 인식 할당이 없습니다.

  • 사용자 지정 스케줄러 확장은 종종 지능형 배치에 필요합니다.

동적 리소스 할당(DRA)은 이러한 제한 사항을 해결하는 Kubernetes 버전 1.34에서 일반적으로 사용할 수 있는 Kubernetes 기능입니다. DRA를 사용하면 디바이스 드라이버가 ResourceSlice 객체를 통해 Kubernetes 스케줄러에 여러 디바이스 속성을 게시합니다. DeviceClass 카테고리를 참조하는 ResourceClaimResourceClaimTemplate 객체를 사용하여 디바이스를 요청합니다.

DRA는 다음을 지원합니다.

  • 공통 표현식 언어(CEL) 표현식을 사용한 속성 기반 디바이스 선택.

  • 디바이스가 동일한 PCIe 스위치 또는 NUMA 도메인에 함께 배치되도록 하는 토폴로지 인식 할당.

  • 공유 ResourceClaim 참조를 통해 여러 컨테이너 또는 포드 사이에서 디바이스 공유.

  • 여러 디바이스 유형을 조정하는 제약 조건 기반 스케줄링

Amazon EKS에 대한 DRA 드라이버

다음 DRA 드라이버는 일반적으로 Amazon EKS 클러스터에서 특수 하드웨어 디바이스를 관리하는 데 사용됩니다.

EFA DRA 드라이버

EFA DRA 드라이버(DRANET)는 Elastic Fabric Adapter(EFA) 인터페이스를 토폴로지상 로컬 GPU 또는 Neuron 디바이스와 페어링하는 토폴로지 인식 스케줄링을 통해 EFA 디바이스 할당을 관리하고, 포드 간 디바이스 공유를 지원합니다. 자세한 내용은 Amazon EKS에서 EFA 디바이스 관리 섹션을 참조하세요.

Neuron DRA 드라이버

Neuron DRA 드라이버는 사용자 지정 스케줄러 확장 없이 토폴로지 인식 스케줄링, 연결된 디바이스 하위 세트 할당 및 논리적 NeuronCore(LNC) 구성을 사용하여 AWS Trainium 및 AWS Inferentia2 디바이스 할당을 관리합니다.

NVIDIA DRA 드라이버

GPU용 NVIDIA DRA 드라이버를 사용하면 EC2 Grace-Blackwell 인스턴스에서 다중 노드 NVLink(MNNVL) 워크로드에 대한 ComputeDomain 리소스 지원을 포함하여 NVIDIA GPU를 유연하게 할당하고 동적으로 재구성할 수 있습니다. EC2 Grace-Blackwell 인스턴스에서 ComputeDomains를 사용하는 방법에 대한 자세한 내용은 Amazon EKS에서 P6e-GB200 UltraServers 사용 섹션을 참조하세요.

Amazon EKS에 대한 디바이스 플러그인

다음 디바이스 플러그인은 일반적으로 Amazon EKS 클러스터에서 특수 하드웨어 디바이스를 관리하는 데 사용됩니다.

EFA 디바이스 플러그인

EFA 디바이스 플러그인은 각 노드에서 사용 가능한 모든 EFA 디바이스를 검색하고 EFA 디바이스를 vpc.amazonaws.com/efa 확장 리소스로 알립니다.

Neuron 디바이스 플러그인

Neuron 디바이스 플러그인은 Neuron 하드웨어를 aws.amazon.com/neuroncoreaws.amazon.com/neuron 확장 리소스로 노출합니다. 각 노드에서 사용 가능한 Neuron 디바이스를 검색하고 할당 가능한 리소스로 알리며 해당 수명 주기를 관리합니다.

NVIDIA 디바이스 플러그인

NVIDIA 디바이스 플러그인은 NVIDIA GPU를 nvidia.com/gpu 확장 리소스로 알리고 GPU 상태를 추적합니다.

고려 사항

Amazon EKS에서 DRA 드라이버를 사용하기 전에 다음 고려 사항을 검토합니다.

  • DRA는 Kubernetes 버전 1.33 이상이 설치된 Amazon EKS에서 사용할 수 있지만, 업스트림 Kubernetes 문제로 인해 Kubernetes 버전 1.34 이상에 권장됩니다. 클러스터 컨트롤 플레인 및 노드는 DRA를 지원하는 Kubernetes 버전을 실행해야 합니다.

  • DRA는 현재 Karpenter 또는 EKS Auto Mode 프로비저닝 컴퓨팅과 호환되지 않습니다. DRA 드라이버와 함께 EKS 관리형 노드 그룹 또는 자체 관리형 노드를 사용해야 합니다.

  • 동일한 디바이스 유형의 DRA 드라이버와 디바이스 플러그인은 동일한 노드에서 동시에 실행해서는 안 됩니다. 해당 DRA 드라이버를 설치하기 전에 디바이스 플러그인을 제거하거나 별도의 노드에 배포합니다. DRA 드라이버 및 디바이스 플러그인 호환성에 대한 업데이트는 업스트림 Kubernetes KEP-5004를 참조하세요.

  • DRA는 디바이스 플러그인(resource.limits, resource.requests)과 다른 Kubernetes API 리소스(ResourceClaim, ResourceClaimTemplate, DeviceClass)를 사용합니다. 디바이스 플러그인에서 DRA로 마이그레이션하려면 워크로드 사양을 업데이트해야 합니다.

  • 디바이스 플러그인은 여전히 모든 Kubernetes 버전에서 완전히 지원됩니다. 클러스터가 1.34 이전의 Kubernetes 버전을 실행하는 경우 또는 Karpenter나 EKS 자율 모드를 사용하는 경우 디바이스 플러그인을 계속 사용합니다. NVIDIA DRA 드라이버는 Bottlerocket에서 지원되지 않습니다. Bottlerocket 노드에서는 NVIDIA 디바이스 플러그인을 사용합니다. EFA 및 Neuron DRA 드라이버는 Bottlerocket에서 지원됩니다.

DRA ResourceClaim 및 ResourceClaimTemplate 비교

DRA를 사용하는 경우 ResourceClaim 또는 ResourceClaimTemplate 객체를 통해 디바이스를 요청합니다. 이 두 리소스 유형은 서로 용도가 다르며 수명 주기 동작도 다릅니다.

ResourceClaim

ResourceClaim은 포드와 독립적으로 생성하는 명명된 Kubernetes 객체입니다. resourceClaimName 필드를 사용하여 포드 사양에서 이를 이름으로 참조합니다. 다음은 ResourceClaim의 특성입니다.

  • 이를 참조하는 포드가 생성되기 전에 클러스터에 있어야 합니다. 클레임이 없는 경우 포드는 보류 상태로 남아 있습니다.

  • 포드가 이를 참조하는지 여부에 관계없이 명시적으로 삭제할 때까지 유지됩니다.

  • 여러 포드에서 동일한 ResourceClaim을 참조할 수 있으므로, 이를 통해 디바이스 공유를 활성화합니다. 동일한 클레임을 참조하는 모든 포드는 할당된 동일한 디바이스에 대한 액세스를 공유하며 동일한 노드로 예약됩니다.

    여러 포드가 동일한 디바이스에 대한 액세스를 공유해야 하거나 단일 포드의 수명을 초과하여 클레임이 필요한 경우 ResourceClaim을 사용합니다.

ResourceClaimTemplate

ResourceClaimTemplate에서는 Kubernetes가 각 포드에 대해 고유한 ResourceClaim을 자동으로 생성하는 데 사용하는 템플릿을 정의합니다. resourceClaimTemplateName 필드를 사용하여 포드 사양에서 이를 참조합니다. ResourceClaimTemplate 자체는 포드에 바인딩되지 않으며, 독립적으로 유지되는 재사용 가능한 템플릿입니다. 다음은 ResourceClaimTemplate의 특성입니다.

  • Kubernetes는 각 포드에 대해 템플릿을 참조하는 새 ResourceClaim을 생성합니다. 각 포드는 별도의 자체 디바이스 세트를 가져옵니다.

  • 생성된 각 ResourceClaim은 해당 생성을 트리거하는 포드의 수명 주기에 바인딩됩니다. 포드가 삭제되면 연결된 상태의 생성된 ResourceClaim도 삭제됩니다. ResourceClaimTemplate 자체는 영향을 받지 않으며 향후 포드에 대해 새 클레임을 계속 생성합니다.

    워크로드의 각 포드에 유사한 구성의 자체 전용 디바이스가 필요한 경우 ResourceClaimTemplate을 사용합니다. 예를 들어 각 포드에 자체 GPU 또는 EFA 디바이스가 필요한 병렬 실행을 사용하는 작업에서는 포드에 대해 ResourceClaimTemplate을 사용합니다.

다음 표에는 ResourceClaimResourceClaimTemplate 차이점이 요약되어 있습니다.

동작 ResourceClaim ResourceClaimTemplate

만들기

포드에서 이를 참조하기 전에 수동으로 생성

Kubernetes는 포드당 자동으로 클레임 생성

수명 주기

이는 직접 삭제할 때까지 유지

템플릿은 사용자가 삭제할 때까지 유지됩니다. 생성된 각 ResourceClaim은 해당 생성을 트리거하는 포드에 바인딩됩니다.

여러 포드 사이에서 디바이스 공유

지원 여러 포드가 동일한 클레임을 참조할 수 있습니다.

지원되지 않음. 각 포드는 별도의 클레임을 가져옵니다.

포드 사양 필드

resourceClaimName

resourceClaimTemplateName

여러 포드 사이에서 EFA 디바이스를 공유하기 위해 ResourceClaim 객체를 사용하는 예제는 여러 포드 사이에서 EFA 디바이스 공유 섹션을 참조하세요. 토폴로지 인식 할당이 적용되는 ResourceClaimTemplate 객체를 사용하는 예제는 토폴로지 인식 EFA 및 GPU/Neuron 디바이스 할당 섹션을 참조하세요.

주제