여러 드라이버 버전 운영¶
한 클러스터에서 NPU 제품군이나 노드 그룹별로 서로 다른 드라이버 버전을 운영할 수 있습니다. 이 문서는 NPU 드라이버 업그레이드에서 설명하는 컨테이너 드라이버 환경을 기준으로 합니다.
드라이버 설정과 노드 선택¶
Helm values의 최상위 driver에는 함께 사용할 이미지·리소스 설정을 지정하고, driver.instances에는 노드 그룹별 설정을 지정합니다. 각 인스턴스에서 지정한 값이 공통 설정값보다 우선하며, 생략한 값은 공통 설정을 사용합니다. driver.upgradePolicy는 모든 인스턴스에 동일하게 적용됩니다.
여러 버전을 운영할 때는 driver.deployDefault: false로 설정하고 각 인스턴스에서 대상 노드와 버전을 지정해야 합니다. true로 두면 인스턴스가 선택하지 않은 노드에도 공통 설정의 드라이버가 적용될 수 있습니다. false로 설정해도 공통 설정의 상속은 유지됩니다.
각 인스턴스의 nodeSelector로 대상 노드를 지정합니다. nodeSelector는 상속되지 않으므로 인스턴스마다 직접 지정해야 합니다. 한 노드에 여러 인스턴스가 매칭되면, 다른 매칭 조건을 모두 포함하는 가장 구체적인 인스턴스가 담당합니다. 예를 들어 같은 제품군을 선택할 때 env: canary 조건까지 지정한 인스턴스가 제품군만 지정한 인스턴스보다 우선합니다.
---
config:
htmlLabels: false
flowchart:
curve: linear
---
flowchart TD
A["매칭되는 RBLNDriver<br/>셀렉터 확인"] --> B{"가장 구체적인<br/>셀렉터가 하나인가?"}
B -->|"예"| C["Owner 리소스 결정<br/>Owner 레이블 설정"]
C --> D["Owner 레이블로<br/>드라이버 Pod 배치"]
B -->|"아니오"| E["셀렉터 충돌 보고<br/>기존 드라이버 유지"] 여러 인스턴스가 매칭되지만 우선할 인스턴스를 하나로 정할 수 없으면 ConflictingNodeSelector 사유로 보고됩니다. 충돌한 셀렉터를 수정해야 합니다. rebellions.ai/npu.driver.owner와 rebellions.ai/npu.deploy.driver는 오퍼레이터가 관리하는 레이블이므로 nodeSelector에 지정할 수 없습니다.
드라이버가 필요한 노드가 인스턴스의 nodeSelector에서 빠지지 않도록 확인해야 합니다. 기존 설치에서 true를 false로 바꿀 때는 기본 드라이버를 사용하던 노드도 포함해야 합니다.
구성 예시¶
아래 예시는 제품군별로 버전을 직접 지정하는 구성과, 같은 제품군에서 공통 버전과 카나리 버전을 함께 사용하는 구성을 보여줍니다. 버전과 노드 선택 조건은 환경에 맞게 변경합니다.
각 인스턴스에 드라이버 버전을 직접 지정합니다. ATOM™ 노드는 3.4.1을, Rebel100™ 노드는 3.5.1을 사용합니다.
Rebel100™ 노드는 공통 버전 3.5.1을 사용하고, 일부 노드에만 다른 버전을 적용합니다. 다른 버전을 사용할 노드에는 env: canary 레이블을 지정합니다.
인스턴스 라우팅 확인¶
선택된 인스턴스의 리소스 이름은 노드의 rebellions.ai/npu.driver.owner 레이블에서 확인할 수 있습니다.