콘텐츠로 이동

샌드박스형 워크로드(KubeVirt)

RBLN NPU Operator는 VFIO Manager로 NPU를 vfio-pci에 바인딩하고 KubeVirt VM에 PCI 패스스루로 연결합니다. NPU 할당에는 Sandbox Device Plugin과 DRA 중 하나를 선택합니다.

사전 준비

할당 방식별 권장 최소 버전과 사전 요구사항은 다음과 같습니다. 선택한 방식에 맞춰 클러스터와 워커 노드를 구성하고 KubeVirt를 설치해 VM 실행 환경을 준비합니다.

항목 Sandbox Device Plugin DRA Driver(VM 패스스루)
Kubernetes v1.19+ v1.34+
KubeVirt Kubernetes 호환 버전 v1.9.0+
NPU Operator v0.4.4+ v0.6.0+
NPU DRA 드라이버 사용하지 않음 v0.2.1+
Helm v3.9+ v3.9+
IOMMU BIOS 및 호스트 커널에서 활성화(intel_iommu=on 또는 amd_iommu=on) BIOS 및 호스트 커널에서 활성화(intel_iommu=on 또는 amd_iommu=on)
vIOMMU VM 기반 워커 노드에 필요 VM 기반 워커 노드에 필요
VFIO 커널 모듈 vfio, vfio_pci, vfio_iommu_type1 vfio, vfio_pci, vfio_iommu_type1
Node Feature Discovery(NFD) 클러스터에 설치 클러스터에 설치

IOMMU 설정은 PCI 패스스루에서 확인할 수 있습니다.

VFIO 설정

VM 전용 클러스터의 Helm 설정은 KubeVirt VM 패스스루 구성에서 확인할 수 있습니다.

하이브리드 클러스터

하이브리드 클러스터에서는 컨테이너용 워커 노드와 VM 패스스루용 워커 노드를 분리합니다. 기본 모드는 container이며, 워크로드 레이블로 VM용 노드를 지정합니다. 모드 변경은 노드의 모든 NPU에 적용됩니다.

Helm 설정은 컨테이너·VM 혼용을 위한 Helm 설정, 모드별 동작과 레이블 설정은 노드별 워크로드 설정에서 확인할 수 있습니다.

사용 중인 노드의 모드를 바꾸기 전에는 워크로드를 옮기거나 중지하고 노드 모드 전환 절차를 따라야 합니다.

노드를 지정하고 리소스를 확인하는 예제는 컨테이너·VM용 NPU 노드 분리하기에서 확인할 수 있습니다.

디바이스 라이프사이클

VM에서 NPU를 사용하기까지의 과정은 다음과 같습니다.

  1. 노드 선택: NFD가 NPU를 감지하면 오퍼레이터가 각 노드의 워크로드 모드에 맞는 컴포넌트를 배포합니다.
  2. 준비: VFIO Manager가 관련 컴포넌트를 일시 중지하고 호스트에서 NPU 디바이스 파일을 사용하는 워크로드가 없는지 확인합니다.
  3. VFIO 바인딩: VFIO Manager가 NPU PCI 디바이스를 호스트의 기존 드라이버에서 분리하고 vfio-pci에 바인딩합니다. 할당 플러그인은 VFIO 준비 상태를 확인한 뒤 디바이스를 할당 대상으로 제공합니다.
  4. 할당: VM이 NPU를 요청하면 선택한 방식(Sandbox Device Plugin 또는 DRA)에 따라 사용 가능한 NPU를 할당합니다.
  5. VM 연결: KubeVirt가 할당된 PCI 디바이스를 게스트 VM에 연결합니다. 게스트의 NPU 애플리케이션은 게스트에 설치한 RBLN Driver를 통해 NPU를 사용합니다.

할당 방식을 바꾸기 전에는 NPU가 연결된 VM을 종료해야 합니다.

KubeVirt 설정

KubeVirt 리소스를 조회하고 편집합니다.

kubectl get kubevirt -A
kubectl edit kubevirt <KUBEVIRT_NAME> -n <KUBEVIRT_NAMESPACE>

기존 기능 게이트 목록에 HostDevices를 추가합니다. 이미 활성화한 기능 게이트는 유지합니다.

1
2
3
4
5
spec:
  configuration:
    developerConfiguration:
      featureGates:
      - HostDevices

DRA를 사용한다면 같은 목록에 HostDevicesWithDRA도 추가해야 합니다. KubeVirt v1.9.0에서 DRA 호스트 디바이스를 사용하려면 HostDevices와 HostDevicesWithDRA가 모두 필요합니다.

선택한 방식에 따라 Sandbox Device Plugin 설정 또는 DRA Driver 설정을 진행하고 VM에 NPU를 연결합니다. VM 생성부터 게스트에서 NPU를 확인하는 과정까지는 KubeVirt VM에 NPU 연결하기에서 확인할 수 있습니다.