View a markdown version of this page

Amazon EKS에서 EFA 디바이스 관리 - Amazon EKS

이 페이지 개선에 도움 주기

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

Amazon EKS에서 EFA 디바이스 관리

Elastic Fabric Adapter(EFA)는 기계 학습 훈련 및 고성능 컴퓨팅(HPC) 워크로드를 위한 고성능 노드 간 통신을 지원하는 Amazon EC2 인스턴스용 네트워크 디바이스입니다. Amazon EKS는 EKS 클러스터에서 EFA 디바이스를 관리하기 위한 EFA 디바이스 플러그인을 지원합니다.

EFA 인터페이스를 사용하여 EKS 노드 생성

EFA 인터페이스를 사용하여 EKS 노드를 생성하는 경우 인스턴스 부트스트랩 중에 EFA 인터페이스가 연결됩니다. 디바이스별 EFA 구성을 사용자 지정하거나 EFA 지원 EC2 인스턴스에 대한 배치 그룹을 사용해야 하는 경우 EKS 관리형 노드 그룹 또는 EKS 자체 관리형 노드 그룹을 사용하는 것이 좋습니다. 시작 템플릿을 사용하여 각 네트워크 인터페이스에 대한 구성을 전달할 수 있습니다.

동적 프로비저닝과 함께 EKS Auto Mode 또는 Karpenter를 사용하는 경우 vpc.amazonaws.com/efa를 요청하는 포드에 대해 생성된 인스턴스에서는 모든 인터페이스가 EFA 인터페이스 유형으로 구성됩니다. EKS Auto Mode 및 Karpenter의 정적 용량 프로비저닝은 현재 디바이스별 EFA 구성을 지원하지 않습니다. EKS Auto Mode 및 Karpenter는 현재 배치 그룹을 지원하지 않습니다.

efaEnabled 설정으로 EKS 노드를 프로비저닝하기 위해 eksctl을 사용하는 경우 모든 인터페이스가 EFA 인터페이스 유형으로 구성되고, EFA별 보안 그룹이 생성되며, EFA 디바이스 플러그인이 클러스터에 설치됩니다. eksctl을 사용할 때 디바이스별 EFA 구성을 사용자 지정해야 하는 경우 시작 템플릿에 대한 'eksctl'의 지원을 사용하는 것이 좋습니다.

EFA에서 EKS 최적화 AMI 사용

EKS 최적화 AL2023 가속 AMI(NVIDIA 및 Neuron) 및 모든 Bottlerocket AMI에는 EFA를 사용해야 하는 호스트 수준 구성 요소가 포함되어 있습니다. EKS AL2023 및 Bottlerocket AMI에는 EFA 디바이스 플러그인이 포함되어 있지 않으므로, EFA를 사용하는 워크로드를 배포하기 전에 디바이스 플러그인을 클러스터에 별도로 설치해야 합니다.

EFA Kubernetes 디바이스 플러그인 설치

EFA 디바이스 플러그인은 EFA 디바이스를 vpc.amazonaws.com/efa 확장 리소스로 알립니다. 컨테이너 리소스 요청 및 제한에서 EFA 디바이스를 요청합니다. 훈련 워크로드로 EFA를 설정하는 전체 연습 과정은 Elastic Fabric Adapter를 사용한 Amazon EKS에서 기계 학습 훈련 실행 섹션을 참조하세요.

EFA 디바이스 플러그인은 물리적 EC2 인스턴스에서 Neuron 액셀러레이터 및 NVIDIA GPU와 토폴로지상 가까운 EFA 디바이스를 자동으로 할당합니다.

사전 조건

  • Amazon EKS 클러스터.

  • EFA 지원 Amazon EC2 인스턴스 유형이 있는 노드. 지원되는 인스턴스 유형 목록은 Amazon EC2 사용 설명서지원되는 인스턴스 유형을 참조하세요.

  • EFA에 대해 호스트 수준 구성 요소가 설치된 노드. EKS AL2023 가속 AMI 또는 EKS Bottlerocket AMI를 사용하는 경우에 포함됩니다.

  • 명령줄 환경에 설치된 Helm에 대한 자세한 내용은 Helm 설정 지침을 참조하세요.

  • 클러스터와 통신하도록 구성된 kubectl. 자세한 내용은 kubectl 설치 또는 업데이트 섹션을 참조하세요.

절차

  1. EKS 헬름 차트 리포지토리를 추가하세요.

    helm repo add eks https://aws.github.io/eks-charts
  2. 로컬 헬름 리포지토리를 업데이트하세요.

    helm repo update
  3. EFA 디바이스 플러그인을 설치하세요.

    helm install efa eks/aws-efa-k8s-device-plugin -n kube-system
  4. EFA 디바이스 플러그인 DaemonSet가 실행 중인지 확인하세요.

    kubectl get daemonset -n kube-system aws-efa-k8s-device-plugin-daemonset
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE aws-efa-k8s-device-plugin-daemonset 2 2 2 2 2 <none> 60s
  5. 노드에 할당 가능한 EFA 리소스가 있는지 확인하세요.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,EFA:.status.allocatable.vpc\.amazonaws\.com/efa"
    NAME EFA ip-192-168-11-225.us-west-2.compute.internal 4 ip-192-168-24-96.us-west-2.compute.internal 4

포드에서 EFA 디바이스 요청

디바이스 플러그인을 사용하여 EFA 디바이스를 요청하려면 컨테이너 리소스 요청 또는 제한에서 vpc.amazonaws.com/efa 리소스를 지정합니다.

apiVersion: v1 kind: Pod metadata: name: efa-workload spec: containers: - name: app ... resources: limits: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ... requests: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ...