RBLN NPU Operator¶
RBLN NPU Operator는 Kubernetes 및 OpenShift 클러스터에서 RBLN NPU 제품군의 프로비저닝에 필요한 Rebellions 소프트웨어 구성 요소를 자동으로 배포하고 관리합니다. 단일 RBLNClusterPolicy 커스텀 리소스가 전체 워크플로를 주도하고 해당 정책이 생성되면, 오퍼레이터는 자동으로 다음 작업을 수행합니다.
- Node Feature Discovery(NFD)를 활용한 하드웨어 탐지와 노드 라벨링
- 컨테이너/VM 패스스루 2가지 워크로드 유형에 맞춘 디바이스 노출
- VFIO 바인딩, 장치 플러그인, 메트릭 수집기 등 NPU 주변 구성요소 배포 및 상태 관리
- OpenShift와 Vanilla Kubernetes 모두에서 동작하도록 RBAC/SCC 자동 구성
핵심 구성 요소¶
다음 표는 오퍼레이터가 배포·관리하는 주요 구성 요소와 역할을 요약합니다.
| 구성 요소 | 설명 |
|---|---|
| Device Plugin | rebellions/k8s-device-plugin 이미지를 사용해 rebellions.ai/ATOM 같은 리소스를 파드에 노출합니다. resourceList에 제품 카드별 리소스를 매핑합니다. |
| Sandbox Device Plugin | VM 패스스루용 리소스로 rebellions.ai/ATOM_PT 등을 제공합니다. VFIO 체크 컨테이너와 동작하며 KubeVirt 환경을 대상으로 합니다. |
| VFIO Manager | rebellions/rbln-vfio-manager 이미지와 vfio-manage.sh 스크립트를 ConfigMap으로 전달해 VFIO 바인딩/언바인딩을 담당합니다. |
| NPU Feature Discovery | rebellions/rbln-npu-feature-discovery가 노드의 PCI-1eff 벤더 라벨을 식별해 rebellions.ai/npu.present 등을 설정합니다. |
| Metrics Exporter | rebellions/rbln-metrics-exporter가 NPU 메트릭을 Prometheus 형식으로 노출합니다. |
| Operator Manager | cmd/main.go에서 로드되는 컨트롤러가 단일 RBLNClusterPolicy만 허용하며, K8S Node와 구성요소의 DaemonSet 변화를 감시합니다. |
NPU Operator 설치¶
RBLN NPU Operator Helm Chart는 Kubernetes 클러스터에서 RBLN NPU를 자동으로 탐지하고 필요한 디바이스 플러그인을 배포하며 관련 컴포넌트의 상태를 모니터링합니다. 빠르게 시작하려면 다음 단계를 따르세요.
-
사전 준비
- Kubernetes 1.19+ 클러스터와
kubectl,helm명령어 사용 가능 rbln-system처럼 오퍼레이터를 배치할 전용 네임스페이스 권장- NPU가 장착된 워커 노드와 Node Feature Discovery(NFD) 설치(차트에서
nfd.enabled=true로 함께 설치 가능)
- Kubernetes 1.19+ 클러스터와
-
Helm 설치(필요 시)
-
Rebellions Helm 리포지토리 등록
-
NPU Operator 설치
설치 확인¶
Helm 설치가 성공적으로 끝나면 RBLNClusterPolicy 커스텀 리소스가 생성되고 정상 동작하는지 먼저 확인합니다.
다음으로 rbln-system 네임스페이스에서 컨트롤러와 파드가 모두 실행 중인지 점검합니다.
- 컨트롤러 컴포넌트:
controller-manager-*파드가RBLNClusterPolicy를 상시 조율합니다. - 오퍼랜드:
rbln-device-plugin,rbln-npu-feature-discovery,rbln-metrics-exporter가 디바이스 노출·라벨링·모니터링 관리를 담당합니다.
어떤 파드라도 Pending/CrashLoopBackOff 상태라면 kubectl logs <pod> -n rbln-system으로 로그를 확인하고 Helm values 설정과 선행 조건을 다시 점검하세요.
NPU 상태 확인¶
Kubernetes가 각 노드에서 인식한 NPU 용량을 조회해 디바이스 플러그인이 기대한 리소스를 노출했는지 확인합니다.
샌드박스 워크로드 전용으로 rebellions.ai/ATOM_PT 같은 대체 리소스 이름을 사용한다면, 위 명령에서 해당 문자열로 바꿔서 동일하게 용량 컬럼을 확인하면 됩니다.
NPU 지원 Pod 생성¶
-
매니페스트 저장 (예:
npu-demo-pod.yaml) — 아래와 같이rebellions.ai/ATOM리소스 4개를 요청합니다. -
Pod 생성.
-
Pod 상태 및 리소스 할당 확인.
kubectl describe pod npu-pod명령으로 요청한 NPU 리소스가 바인딩되어 NPU 지원 노드에 스케줄되었는지 확인합니다.
차트 커스터마이징 옵션¶
아래 표들은 Helm 값(values.yaml)에서 자주 조정되는 항목과 사용 시나리오를 범주별로 정리한 것입니다.
글로벌 및 의존성¶
| 주요 키 | 기본값 / 설명 | 커스터마이징 시나리오 |
|---|---|---|
name |
rbln – 모든 자식 리소스 접두사 |
다중 오퍼레이터 인스턴스를 같은 클러스터에 둘 때 충돌 방지 |
nfd.enabled |
false – NFD 동시 설치 여부 |
NFD가 없는 클러스터에서 빠르게 설치하려면 true |
npuFeatureDiscovery.enabled / image.* |
true, rebellions/rbln-npu-feature-discovery:latest |
수동 라벨링 체계가 있으면 비활성화 |
오퍼레이터 배포¶
| 주요 키 | 기본값 / 설명 | 커스터마이징 시나리오 |
|---|---|---|
operator.image.* |
rebellions/rbln-npu-operator:latest |
사설 레지스트리 사용, 특정 버전 고정 |
operator.replicas |
1 |
고가용성이 필요하면 2 이상 |
operator.resources |
CPU/메모리 요청·제한 | 클러스터 용량에 맞춰 리소스 튜닝 |
operator.service.* |
ClusterIP, 8443/8443 |
Ingress/서비스 메시 통합 시 포트·타입 변경 |
operator.securityContext.runAsNonRoot |
true |
보안 요구사항에 따라 권한 조정 |
operator.affinity / tolerations |
기본 비어 있음 | 컨트롤 플레인 전용 또는 특정 워커 고정 스케줄링 |
컨테이너 워크로드 스택¶
| 주요 키 | 기본값 / 설명 | 커스터마이징 시나리오 |
|---|---|---|
devicePlugin.enabled |
true |
컨테이너 기반 워크로드면 유지, VM 전용이면 false |
devicePlugin.image.* |
rebellions/k8s-device-plugin:latest |
사설 레지스트리 사용, 특정 버전 고정 |
devicePlugin.resourceList[] |
rebellions.ai/ATOM |
카드별 리소스 이름/프리픽스 추가 |
metricsExporter.enabled / image.* |
true, rebellions/rbln-metrics-exporter:latest |
별도 모니터링 스택이 있으면 비활성화 |
VM 패스스루 스택¶
| 주요 키 | 기본값 / 설명 | 커스터마이징 시나리오 |
|---|---|---|
sandboxDevicePlugin.enabled |
false (기본 비활성) |
KubeVirt 등 VM 환경에서 true |
sandboxDevicePlugin.resourceList[] |
rebellions.ai/ATOM_PT |
카드 모델별 VFIO 리소스 이름 조정 |
sandboxDevicePlugin.vfioChecker.image.* |
rebellions/rbln-vfio-manager:latest |
검증 컨테이너 이미지를 교체 |
vfioManager.enabled |
false |
VM passthrough 구성 시 true |
vfioManager.image.* |
rebellions/rbln-vfio-manager:latest |
사설 레지스트리 사용, 특정 버전 고정 |