AKS(Azure Kubernetes Service)에서 완전 관리형 GPU 노드 풀 만들기(미리 보기)

AKS(Azure Kubernetes Service) NVIDIA GPU 워크로드를 실행하려면 일반적으로 각 GPU 노드에 NVIDIA GPU 드라이버, Kubernetes 디바이스 플러그 인 및 GPU 메트릭 내보내기를 설치하고 유지 관리해야 합니다. 이러한 구성 요소는 GPU 예약, 컨테이너 수준 GPU 액세스 및 원격 분석을 지원하지만 수동으로 또는 NVIDIA GPU 연산 자를 통해 설치하면 운영 오버헤드가 추가됩니다.

완전히 관리되는 GPU 노드(미리 보기)를 사용하면 AKS는 NVIDIA GPU 드라이버, 디바이스 플러그 인 및 DCGM(Data Center GPU Manager ) 메트릭 내보내기를 설치하고 유지 관리합니다. GPU 노드 풀 만들기는 단일 단계가 되고 GPU 용량은 다른 AKS 노드 풀처럼 동작합니다.

다음의 gpuProfile.nvidia두 필드를 통해 관리되는 GPU 노드 풀을 구성합니다.

  • managementMode (Managed 또는 Unmanaged) AKS가 전체 관리형 GPU 스택(드라이버, 디바이스 플러그 인 및 DCGM 메트릭 내보내기)을 설치할지 또는 드라이버만 설치할지 여부를 제어합니다. 기본값은 Unmanaged입니다.
  • migStrategy(None또는SingleMixed) A100 및 H100과 같은 지원되는 GPU SKU에 대한 MIG(다중 인스턴스 GPU) 전략을 설정합니다. 기본값은 None입니다.

이 문서에서는 관리되는 GPU 노드 풀을 프로비전하고, 필요에 따라 MIG를 사용하도록 설정하고, 스택을 확인하고, 샘플 GPU 워크로드를 실행합니다.

중요합니다

AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.

시작하기 전 주의 사항:

관리되는 GPU 구성 요소

관리되는 GPU 노드 풀은 모든 노드에 다음 구성 요소를 포함할 수 있습니다.

구성 요소 용도 AKS에서 관리하는 기능
NVIDIA GPU 드라이버 OS 및 컨테이너가 GPU 하드웨어와 통신할 수 있도록 하는 커널 모듈 및 사용자 공간 라이브러리. 드라이버 버전 선택, 노드 프로비저닝 시 설치 및 노드 이미지 업그레이드 후 다시 설치
NVIDIA Kubernetes 디바이스 플러그 인 Pod가 GPU 리소스를 요청할 수 있도록 kubelet에 GPU 리소스를 광고하는 DaemonSet과 동등한 것입니다(nvidia.com/gpu, nvidia.com/mig-*). 각 GPU 노드의 배포, 구성(MIG 전략 포함) 및 수명 주기.
NVIDIA DCGM 및 DCGM 메트릭 내보내기 데이터 센터 GPU 관리자는 GPU 상태 및 사용률 데이터를 수집하고 포트DCGM_FI_DEV_GPU_UTIL에 Prometheus 메트릭(예: DCGM_FI_DEV_GPU_TEMP19400: )을 노출합니다. 설치, 서비스 활성화, 그리고 메트릭을 스크래핑하는 데 사용되는 kubernetes.azure.com/dcgm-exporter=enabled 노드 레이블.
GPU 상태 신호 NPD는 GPU 관련 노드 조건(예: UnhealthyNvidiaDevicePluginUnhealthyNvidiaDCGMServices.)을 표시하는 신호를 표시합니다. GPU 노드에 대한 NPD 모니터링 및 조건 보고입니다.

프로필 설치

gpuProfile 필드는 AKS가 설치하는 구성 요소 중 어느 것을 결정하는지 결정합니다.

  • gpuProfile.driver (Install 또는 None): AKS에서 NVIDIA GPU 드라이버를 설치하는지 여부입니다.
  • gpuProfile.nvidia.managementMode (Managed 또는 Unmanaged): AKS가 드라이버 위에 Kubernetes 연결 GPU 스택을 설치하는지 여부입니다.

함께 세 개의 설치 프로필을 생성합니다.

프로필 설치 CLI 플래그 AKS가 설치하고 관리하는 기능
전체 관리형 스택 --enable-managed-gpu=true (또는 아무 플래그도 선택하지 않음) 위의 네 가지 구성 요소: 드라이버, 디바이스 플러그 인, DCGM 메트릭 내보내기 및 NPD의 GPU 상태 모니터링.
드라이버 전용 (기본값) --enable-managed-gpu=false NVIDIA GPU 드라이버만 해당합니다. 디바이스 플러그 인, 메트릭 내보내기 및 상태 모니터링을 직접 설치하고 관리합니다(예: NVIDIA GPU 연산자 사용).
없음(BYO) --enable-managed-gpu=false --gpu-driver None 아무 일도 일어나지 않습니다. AKS는 네 가지 구성 요소 중 어느 것을 설치하지 않습니다. 당신은 풀 스택을 소유하고 있습니다. 사용자 고유의 GPU 드라이버 가져오기를 참조하세요.

기본값 및 재정의

  • 기본값: --enable-managed-gpu 또는 --gpu-driver를 전달하지 않으면 AKS는 NVIDIA GPU가 장착된 VM 크기로 생성된 노드 풀에 드라이버 전용 프로필을 적용합니다.
  • 재정의: managementMode: Managed 드라이버가 필요하므로 --gpu-driver None 드라이버가 여전히 설치된 경우 --enable-managed-gpu=true 무시됩니다. 드라이버를 건너뛰려면 --enable-managed-gpu=false--gpu-driver None를 설정하세요.
  • 불변성: managementMode, migStrategydriver 생성 시 모두 수정됩니다. 프로필을 변경하려면 새 노드 풀을 만듭니다.

aks-preview CLI 확장 설치

  1. aks-preview 명령을 사용하여 az extension add CLI 확장을 설치합니다. 버전 19.0.0b29 이상이 필요합니다.

    az extension add --name aks-preview
    
  2. az extension update 명령을 사용하여 최신 버전이 설치되어 있는지 확인하려면 확장을 업데이트합니다.

    az extension update --name aks-preview
    

ManagedGPUExperiencePreview 기능 플래그 등록

ManagedGPUExperiencePreview 명령을 사용하여 구독에 az feature register 기능 플래그를 등록합니다.

az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview

제한점

  • 이 기능은 현재 NVIDIA GPU 지원 VM(가상 머신) 크기 만 지원합니다.
  • GPU VM 크기를 추가하도록 범용 노드 풀을 업데이트하는 것은 AKS에서 지원되지 않습니다.
  • Windows 노드 풀은 GPU 메트릭이 지원되지 않으므로 이 기능에서 지원되지 않습니다. Windows GPU 노드 풀을 만들 때 AKS는 드라이버 및 DirectX 디바이스 플러그 인을 자동으로 설치하고 관리합니다. 자세한 내용은 AKS Windows GPU 설명서 참조하세요.
  • 이 기능을 사용하도록 기존 다중 인스턴스 GPU 노드 풀을 마이그레이션하는 것은 지원되지 않습니다.
  • 기존 NVIDIA GPU 노드 풀에서 관리되는 GPU 노드 풀로의 현재 위치 업그레이드는 지원되지 않습니다. 기존 GPU 노드를 격리하고 드레인한 후, --enable-managed-gpu=true로 생성된 새 GPU 노드 풀에 워크로드를 재배포합니다. 자세한 내용은 AKS의 노드 풀 크기 조정을 참조하세요.
  • 노드 풀을 만든 후에는 , , 및 필드는 아래에서 변경할 수 없습니다. 이러한 값을 변경하려면 새 노드 풀을 만듭니다.
  • 클러스터 자동 크기 조정기는 미리 보기 중에 관리되는 GPU 노드 풀에서 지원되지 않습니다. 이러한 풀의 크기를 수동으로 조정합니다.

비고

GPU 지원 VM에는 더 높은 가격 및 지역 가용성에 맞는 특별한 하드웨어가 포함되어 있습니다. 자세한 내용은 가격 책정 도구 및 지역 가용성을 참조하세요.

AKS 관리 GPU 노드 풀 만들기(미리 보기)

기존 AKS 클러스터에 관리형 GPU 노드 풀을 추가하려면 --enable-managed-gpu=trueaz aks nodepool add에 전달하세요. AKS는 gpuProfile.nvidia.managementModeManaged로 설정하고 GPU 드라이버, 디바이스 플러그인 및 DCGM 메트릭 내보내기를 자동으로 설치합니다.

기본 OS(운영 체제) SKU를 사용하려면 OS SKU를 지정하지 않고 노드 풀을 만듭니다. 노드 풀은 클러스터의 Kubernetes 버전을 기반으로 기본 운영 체제로 설정됩니다.

  1. az aks nodepool add 명령과 --enable-managed-gpu=true 플래그를 사용하여 클러스터에 노드 풀을 추가합니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_NC6s_v3 \
        --node-taints sku=gpu:NoSchedule \
        --enable-managed-gpu=true
    
  2. 관리되는 NVIDIA GPU 소프트웨어 구성 요소가 성공적으로 설치되었는지 확인합니다.

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp
    

    출력에는 다음 값이 포함되어야 합니다.

    ...
    "gpuProfile": {
        "driver": "Install",
        "driverType": "",
        "nvidia": {
            "managementMode": "Managed",
            "migStrategy": null
        }
    },
    ...
    

관리형 MIG(다중 인스턴스 GPU) 노드 풀 만들기(미리 보기)

다중 인스턴스 GPU(예: A100 및 H100)를 지원하는 GPU SKU의 경우 플래그를 사용하여 노드 풀 만들기 --gpu-mig-strategy 에서 MIG 전략을 구성합니다. 이 전략은 MIG 파티션이 Kubernetes에 노출되는 방식을 제어합니다.

  • Single: 모든 MIG 인스턴스는 표준 nvidia.com/gpu 리소스에 따라 집계됩니다.
  • Mixed: 각 MIG 프로필은 다음과 같은 nvidia.com/mig-1g.10gb별도의 리소스로 노출됩니다.
  • None (기본값): MIG가 구성되지 않았습니다.

노드 풀을 만든 후에는 migStrategy 필드를 변경할 수 없습니다.

MIG 분할, 지원되는 VM 크기 및 GPU 인스턴스 프로필에 대한 배경 정보는 AKS 및 NVIDIA 다중인스턴스 GPU에서 다중 인스턴스 GPU 노드 풀 만들기를 참조하세요.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mignp \
    --node-count 1 \
    --node-vm-size Standard_NC24ads_A100_v4 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=true \
    --gpu-instance-profile MIG1g \
    --gpu-mig-strategy Single

이 구성을 사용하면 Pod는 표준 nvidia.com/gpu 리소스 이름을 사용하여 GPU 리소스를 요청합니다.

관리되는 GPU 노드 풀 확인(미리 보기)

노드 풀이 준비되면 다음 검사를 실행하여 전체 관리형 스택이 설치되고 정상 상태인지 확인합니다.

  1. NPD(Node Problem Detector)에서 GPU 관련 노드 조건을 확인합니다.

    GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}')
    kubectl describe node $GPU_NODE
    

    관리형 GPU 노드에서는 다음 조건이 모두 False로 보고되어야 합니다.

    Condition 상태 Reason
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. 관리되는 GPU 레이블이 노드에 있는지 확인합니다.

    kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'
    

    예상 출력: enabled.

  3. GPU 리소스가 노드의 할당 가능한 리소스에 보급되는지 확인합니다.

    kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'
    

    MIG가 아닌 노드 풀의 경우 출력에는 SKU에 따라 "nvidia.com/gpu": "1" (또는 그 이상)이 포함됩니다. MIG Mixed 노드 풀의 경우 출력에는 MIG 관련 리소스(예: "nvidia.com/mig-1g.10gb": "7".)가 포함됩니다.

  4. 샘플 워크로드를 실행하여 컨테이너 내에서 GPU 액세스를 확인합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: managed-gpu-test
    spec:
      restartPolicy: Never
      tolerations:
        - key: "sku"
          operator: "Equal"
          value: "gpu"
          effect: "NoSchedule"
      containers:
      - name: gpu-test
        image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
        command: ["nvidia-smi"]
        resources:
          limits:
            nvidia.com/gpu: 1
    

    GPU 디바이스, 드라이버 버전 및 CUDA 버전을 보여 주는 출력을 보려면 nvidia-smi Pod 로그를 봅니다.

    kubectl logs managed-gpu-test
    

관리되는 GPU 노드 풀 크기 조정(미리 보기)

를 사용하여 관리되는 GPU 노드 풀의 크기를 수동으로 조정합니다 az aks nodepool scale. 새 노드는 전체 관리형 GPU 스택을 설치합니다.

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 2

중요합니다

미리 보기 중에 관리되는 GPU 노드 풀은 클러스터 자동 크기 조정기를 지원하지 않습니다. 이러한 풀의 크기를 수동으로 조정합니다.

대체 설치 프로필

전체 관리형 스택 프로필이 적합하지 않은 경우 AKS는 GPU 노드 풀에서 두 개의 대체 프로필을 지원합니다.

AKS에서 NVIDIA GPU 드라이버를 설치하고 유지 관리하지만 디바이스 플러그 인 및 메트릭 내보내기를 직접 배포하려는 경우(예: NVIDIA GPU 연산자를 사용하여) 이 프로필을 사용합니다. 설정 --enable-managed-gpu=false:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --node-vm-size Standard_NC6s_v3 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=false

이 구성에서는 다음을 수행합니다.

  • AKS는 NVIDIA GPU 드라이버(gpuProfile.driverInstall)를 설치하고 관리합니다.
  • AKS는 디바이스 플러그 인, DCGM 메트릭 내보내기 또는 GPU 상태 규칙을 설치하지 않습니다. gpuProfile.nvidianull입니다.
  • 디바이스 플러그인을 배포하기 전까지는 nvidia.com/gpu 리소스가 노출되지 않습니다.

다음 단계