Kubernetes 배포¶
이 섹션에서는 Coding Assistant 서빙 스택을 Kubernetes에 배포합니다. RBLN-CR13 노드를 준비하고, Pod에 NPU와 RoCE NIC을 할당하도록 구성한 뒤, Helm 차트로 스택을 설치합니다. 마지막 배포 단계에서 최초 추론 응답을 확인합니다. 배포 단계에서 참고하는 차트 values는 차트 구성 참고 자료에 모았습니다.
사전 준비
- 각 노드의 OS와 하드웨어는 지원 매트릭스 › RBLN Cloud Native Stack(RCNS)의 검증된 조합이어야 합니다.
- 노드별 하드웨어 수량은 하드웨어를 참고하세요.
- Kubernetes 버전은 RCNS가 지원하는 버전이어야 합니다. 검증된 버전은 소프트웨어 스택과 버전 › 이번 GA 릴리스의 고정 버전을 참고하세요.
- 클러스터는 Dynamic Resource Allocation(DRA) API
resource.k8s.io/v1을 제공해야 합니다. 스택의 Pod는 DRA로 NPU와 NIC을 요청합니다.
이 섹션은 Kubernetes 클러스터 구축을 다루지 않습니다.
스택 계층¶
서빙 스택은 누가 구축하는지에 따라 네 계층으로 나뉩니다.
| 계층 | 구축 주체 | 구성 요소 |
|---|---|---|
| 서빙 스택 | 차트 | Gateway, HTTPRoute, InferencePool, llm-d Endpoint Picker(EPP), 라우팅 사이드카를 포함한 prefill Deployment와 decode Deployment, serve ConfigMap, ServiceAccount, 컴파일 캐시 PersistentVolumeClaim(PVC), GatewayClass가 istio일 때 EPP DestinationRule |
| 사용자 리소스 | 사용자 | Namespace, Image Pull Secret, HF 토큰 Secret, 가중치를 미리 적재한 모델 PVC, StorageClass, ResourceClaimTemplate(이하 RCT) npu-rdma |
| 플랫폼 소프트웨어 | 사용자 | RBLN NPU Operator, dranet, Kubernetes Gateway API CustomResourceDefinition(CRD), Kubernetes Gateway API Inference Extension(GAIE) CRD, GatewayClass provider |
| 노드 | 사용자 | NPU, RoCE NIC, Rebellions Direct Storage(RDS)용 raw NVMe, RoCE NIC 드라이버, RBLN Driver |
모니터링은 선택 사항입니다. 모니터링을 사용하면 차트와 사용자가 다음 구성 요소를 추가로 구축합니다.
| 계층 | 구축 주체 | 구성 요소 |
|---|---|---|
| 모니터링 | 차트와 사용자 | VMPodScrape와 VMServiceScrape 리소스(기본값, Prometheus Operator에서는 PodMonitor와 ServiceMonitor), OpenTelemetry collector, 메트릭 수집기 |
모니터링 구성은 운영을 참고하세요.
배포 단계¶
스택은 노드 계층부터 한 계층씩 순서대로 구축합니다.
| 단계 | 문서 | 생성하는 항목 | 완료 확인 |
|---|---|---|---|
| 1 | 노드 준비 | 호스트의 RoCE NIC 드라이버, RBLN NPU Operator, dranet, RBLN NPU Operator의 RDS 활성화, RDS 노드 레이블 rebellions.ai/rds.present=true | 노드 준비 확인의 명령이 모두 기대한 결과를 출력하고, kubectl get deviceclass에 npu.rebellions.ai와 dranet이 있음 |
| 2 | 디바이스 할당 | Namespace, RCT npu-rdma | kubectl get resourceslices에 노드마다 npu.rebellions.ai와 dra.net의 ResourceSlice가 있고, kubectl -n <ns> get resourceclaimtemplate npu-rdma가 조회됨 |
| 3 | 클러스터 기반 구성 | Gateway API CRD, GAIE CRD, GatewayClass provider, 스택 Namespace의 Secret과 모델 저장소 | 클러스터 확인 및 주요 설정의 명령이 모두 성공하고 DRA ok가 출력됨 |
| 4 | Pod 명세 요구 사항 | 없음 | 스택 Namespace의 Pod Security Standards 수준이 restricted가 아님(non-root 모드는 baseline을 충족). 각 노드의 할당 가능 메모리가 노드 메모리 예산 확인의 계산식 이상 |
| 5 | 컴파일 캐시 | 차트 values의 storage.compileCache 설정. 컴파일 캐시 PVC는 7단계 설치 때 차트가 생성 | 설치 후 kubectl -n <ns> get pvc에서 컴파일 캐시 PVC가 Bound |
| 6 | 시작 및 준비 상태 프로브 | 없음 | 설치 후 Pod 이벤트에 Startup probe failed가 없음 |
| 7 | 서빙 스택 설치(Helm 차트) | Helm 릴리스와 스택 계층 표의 서빙 스택 계층 객체(Gateway, HTTPRoute, InferencePool, EPP, prefill과 decode의 Deployment, 컴파일 캐시 PVC 등) | kubectl -n <ns> get pods에서 prefill, decode, EPP Pod가 모두 Ready이고, 최초 추론의 Chat Completions 요청에 응답이 옴 |
관련 문서¶
- 하드웨어 - 노드별 하드웨어 수량
- 소프트웨어 스택과 버전 - 스택의 구성 요소와 이 설계가 고정한 버전
- 서빙 설정 - 차트가 설정하는 서빙 인자와 환경 변수, 각 인자와 환경 변수의 근거
- 운영 - 설치 후 변경, 모니터링, 장애 대응
- 검증 및 제한 사항 - 검증 당시의 구성과 재현 방법
- 지원 매트릭스 › RBLN Cloud Native Stack(RCNS) - 지원하는 OS, Kubernetes, 드라이버 조합
- RBLN NPU Operator 설치, RBLN NPU Operator 업그레이드, RBLN NPU DRA 드라이버, RBLN NPU Feature Discovery - RBLN NPU Operator 관련 SDK 문서
- llm-d API reference - EPP 서브차트 values의 필드 정의