콘텐츠로 이동

OpenShift용 RBLN NPU Operator 설치 가이드

개요

OpenShift Container Platform은 Red Hat의 오픈소스 기술 스택을 기반으로 하는 엔터프라이즈급 Kubernetes 컨테이너 플랫폼입니다.

이 가이드는 OpenShift Container Platform에서 RBLN NPU Operator를 설치하고 구성하는 방법을 설명합니다. OpenShift를 사용하면 보안, 안정성, 확장성이 요구되는 엔터프라이즈 환경에서 RBLN NPU를 효율적으로 프로비저닝하고 관리할 수 있습니다.

RBLN NPU Operator는 Kubernetes 오퍼레이터 프레임워크를 활용하여 RBLN NPU 사용에 필요한 Rebellions 소프트웨어 컴포넌트의 배포와 라이프사이클 관리를 자동화합니다. 여기에는 Driver Manager, Device Plugin, Container Toolkit, NPU Feature Discovery를 통한 자동 노드 라벨링, Prometheus 기반 Metrics Exporter 등이 포함됩니다.

이 오퍼레이터는 OpenShift 생태계에서 인증된 오퍼레이터로 제공되며, OLM(Operator Lifecycle Manager)을 통해 설치하고 관리할 수 있어 기존 클러스터 운영에 자연스럽게 통합됩니다.

자세한 내용은 RBLN NPU Operator를 참고하세요.

사전 요구사항

단계를 진행하기 전에 다음 사항을 확인하세요: - OpenShift Container Platform 4.19 및 4.20 (검증된 버전) - RBLN NPU가 장착된 워커 노드 하나 이상 - cluster-admin 권한 - 설치 및 설정이 완료된 OpenShift CLI(oc)


Node Feature Discovery Operator 설치

Node Feature Discovery(NFD)는 Kubernetes가 각 노드의 하드웨어 기능을 감지해 라벨로 노출할 수 있도록 합니다.

RBLN NPU Operator는 이 라벨을 사용해 NPU가 장착된 노드를 식별하고 컴포넌트를 스케줄링합니다. NFD가 없으면 Kubernetes는 NPU가 있는 노드와 일반 노드를 구분할 수 없습니다.

설치 절차는 Red Hat 공식 문서를 참고하세요: Red Hat OpenShift Container Platform 4.20용 Node Feature Discovery Operator

RBLN NPU 감지 확인

Rebellions NPU는 PCI 벤더 ID 1eff로 식별됩니다.

NPU가 장착된 노드에 라벨이 적용되었는지 확인합니다:

$ oc describe node <worker-node> | grep pci-1eff

예상 출력:

feature.node.kubernetes.io/pci-1eff.present=true

전체 노드를 한 번에 확인하려면:

$ oc describe nodes | grep pci-1eff

라벨이 없는 경우 다음 항목을 확인하세요: - NFD가 설치되어 실행 중인지 확인합니다. - 호스트 시스템에서 NPU가 인식되는지 확인합니다.


커널 부트 파라미터 설정

RBLN NPU Operator를 설치하기 전에 RBLN NPU가 정상적으로 동작하도록 커널 부트 파라미터를 설정해야 합니다. 이 파라미터는 OpenShift 환경에서 안정적인 NPU 운용을 위해 필요합니다.

커널 파라미터는 OpenShift MachineConfig Operator(MCO)를 통해 적용합니다. 전체 절차는 커널 파라미터 튜닝 가이드를 참고하세요.


RBLN NPU Operator 설치

RBLN NPU Operator를 설치하면 드라이버, 디바이스 플러그인, 모니터링 도구 등 NPU 관련 컴포넌트를 클러스터 전체에서 관리하는 컨트롤러가 배포됩니다. 오퍼레이터는 OpenShift 웹 콘솔(OLM) 또는 CLI를 통해 설치할 수 있습니다.

이미지 풀 시크릿 필요

설치하기 전에 repo.rebellions.ai 인증에 사용할 docker-registry 시크릿을 먼저 생성해야 합니다. 자세한 내용은 이미지 풀 시크릿 생성을 참고하세요.

웹 콘솔을 통한 설치

  1. OpenShift 웹 콘솔에서 Operators > OperatorHub로 이동합니다.
  2. All Projects를 선택합니다.
  3. RBLN Operator > RBLN NPU Operator를 검색한 다음 선택합니다.
  4. Install Operator 페이지에서 다음 옵션을 설정합니다:
    • Update channel: stable
    • Version: 0.4.0
    • Installed Namespace: rbln-system (권장)
  5. Install을 클릭합니다.

RBLN NPU Operator 설치 페이지

CLI를 통한 설치

  1. RBLN NPU Operator에서 사용할 네임스페이스를 생성합니다:

    $ oc create namespace rbln-system
    
  2. OperatorGroup CR을 생성하여 rbln-npu-operatorgroup.yaml로 저장합니다:

    1
    2
    3
    4
    5
    6
    7
    8
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: rbln-npu-operator-group
      namespace: rbln-system
    spec:
      targetNamespaces:
      - rbln-system
    
    $ oc create -f rbln-npu-operatorgroup.yaml
    
  3. rbln-npu-operator 패키지 매니페스트에서 기본 채널과 현재 ClusterServiceVersion(CSV)을 가져옵니다:

    $ CHANNEL=$(oc get packagemanifest rbln-npu-operator -n openshift-marketplace -o jsonpath='{.status.defaultChannel}')
    $ STARTING_CSV=$(oc get packagemanifests/rbln-npu-operator -n openshift-marketplace -ojson | jq -r '.status.channels[] | select(.name == "'$CHANNEL'") | .currentCSV')
    
  4. 앞에서 설정한 변수를 사용해 Subscription CR을 생성하고 rbln-npu-subscription.yaml로 저장합니다:

    $ cat <<EOF > rbln-npu-subscription.yaml
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: rbln-npu-operator
      namespace: rbln-system
    spec:
      channel: $CHANNEL
      name: rbln-npu-operator
      installPlanApproval: Automatic
      source: certified-operators
      sourceNamespace: openshift-marketplace
      startingCSV: $STARTING_CSV
    EOF
    $ oc create -f rbln-npu-subscription.yaml
    
  5. InstallPlan이 생성되었는지 확인합니다:

    $ oc get installplan -n rbln-system
    

RBLNClusterPolicy 인스턴스 생성

RBLNClusterPolicy는 오퍼레이터가 클러스터 전체에서 NPU 관련 컴포넌트를 구성하는 방식을 정의합니다. 배포할 컴포넌트와 사용할 컨테이너 이미지를 포함합니다.

생성된 clusterpolicy.json에는 각 컴포넌트(Device Plugin, Driver Manager, Metrics Exporter 등)의 컨테이너 이미지 버전이 포함되어 있습니다.

1
2
3
4
5
$ oc get csv -n rbln-system $STARTING_CSV \
    -o jsonpath="{.metadata.annotations['alm-examples']}" \
    | jq -r 'map(select(.kind == "RBLNClusterPolicy")) | .[0]' \
    > clusterpolicy.json
$ oc apply -f clusterpolicy.json

컴포넌트 이미지 버전

적용하기 전에 컨테이너 이미지 버전이 최신 릴리즈와 일치하는지 확인하세요. 권장 컴포넌트 버전은 Release Notes를 참고하세요.


RBLNDriver 인스턴스 생성

RBLNDriver 리소스는 각 대상 노드에 NPU 드라이버를 배포합니다.

드라이버는 운영체제가 NPU 하드웨어와 통신할 수 있도록 하며, 워크로드가 NPU 디바이스를 사용하기 위해 반드시 필요합니다.

생성된 driver.json에는 드라이버 컨테이너 이미지 버전이 포함되어 있습니다.

1
2
3
4
5
$ oc get csv -n rbln-system $STARTING_CSV \
    -o jsonpath="{.metadata.annotations['alm-examples']}" \
    | jq -r 'map(select(.kind == "RBLNDriver")) | .[0]' \
    > driver.json
$ oc apply -f driver.json

드라이버 이미지 버전

적용하기 전에 드라이버 버전이 최신 릴리즈와 일치하는지 확인하세요. 권장 드라이버 버전은 Release Notes를 참고하세요.


설치 확인

오퍼레이터를 설치한 후 필요한 리소스와 컴포넌트가 올바르게 배포되었는지 확인합니다.

RBLNClusterPolicyRBLNDriver 리소스가 생성되었는지 확인합니다:

1
2
3
4
5
6
7
$ oc get rblnclusterpolicies.rebellions.ai
NAME                  AGE
rbln-cluster-policy   8m

$ oc get rblndrivers.rebellions.ai
NAME                  AGE
rbln-driver           8m

rbln-system 네임스페이스의 모든 파드가 실행 중인지 확인합니다:

1
2
3
4
5
6
7
8
9
$ oc get pods -n rbln-system
NAME                                             READY   STATUS    AGE
controller-manager-797798d7b8-rjzht              1/1     Running   8m
rbln-device-plugin-4qgxc                         1/1     Running   8m
rbln-metrics-exporter-jghbg                      1/1     Running   8m
rbln-npu-feature-discovery-zg47r                 1/1     Running   8m
rbln-container-toolkit-ttz2c                     1/1     Running   8m
rbln-driver-ubuntu22.04-6.8.0-90-generic-6gtrc   1/1     Running   8m
rbln-operator-validator-qhf4t                    1/1     Running   8m