技術專欄

TECH

Nvidia BCM 初探

技術專欄 2025.08.19
Nvidia BCM 初探

BCM 讓 Nvidia 的用戶在採購了硬體之後,可以無縫銜接到 Nvidia 精心打造的微服務體系,無須過分擔心 K8S 的平台障礙而專注投入到 AI 的應用落地方案中。


最近有機會接觸到 Nvidia 的一個產品,才發現了除了常見的 K8S 管理方案之外,原來 Nvidia 也有自己的一套工具叫做 BCM,可以用來建置與管理 K8S。

________________________________________
BCM 是甚麼?

BCM 前身是 Bright Computing 開發的 Bright Cluster Manager,2022 年被 Nvidia 併購之後才改名為 Basic Command Manager,不過簡稱都叫 BCM 就是了。

BCM 本身是管理 cluster 的軟體,運行在 Linux OS 之上,基本上主流的 Linux 版本都可以支援,例如: RHEL9, SLES15, Uubuntu24.04, DGX-OS7, 等等。同時提供了 Base View (GUI) 與 cmsh (CLI) 兩種介面執行管理工作。
一個 BCM 控管的 cluster 通常會由如下這些設備構成:

•    Head Node:一台(也可以用兩台提供 HA),是整個 cluster 的大腦,負責整個 cluster 管理
•    Compute Node:一台或多台,負責主要的運算
•    Switch:一台或多台,負責節點之間網路串接
•    PDU:可以沒有或多台,負責節點的電源管理


BCM Cluster 設備


Head node 無疑是叢集中最重要的節點,因為所有其他設備都由它來控制。此外,head node 也是預設叢集中所有使用者(包括管理員)登入的主機。Head node 通常是唯一一台直接連接到外部網路的機器,通常也是叢集中唯一一台配備顯示器和鍵盤的機器。同時 head node 也為叢集提供多項重要服務,例如中央資料儲存、工作負載管理、使用者管理、DNS 和 DHCP 等服務。

________________________________________
BCM 可以拿來做甚麼?

嚴格來說,BCM 並不是專門用來管理 K8S Cluster 的工具,其重點還是在於叢集節點的管理,包含了作業系統與軟體的安裝配置。 


BCM 首頁

首先,head node 會是整個 Cluster 最先安裝的系統,特別要留意的是安裝過程中需要選擇正確的 network type。不同的 network type 所適用環境有所不同:

1. 假如整個網路處在一個獨立的 broadcast domain 環境可以選擇 type2
2. 如果與企業網路混合在一起,只有 head node 需要企業網路連線,其他 compute node 安置在獨立的隔離網路,可選擇 type1 或 type3:

•   Type1 需要 head node 擔當 router/NAT 與 reverse proxy 角色, 所有流量都經過它
•   Type3 將 head node 設定在企業網路, 然後 compute node 所在的網路需要部署 dhcp relay 設備


BCM network types

完成 head node 的安裝後即可針對其他節點設定資訊,並準備相應好的 software image (包含 cuda driver/toolkit)以及 DHCP/PXE/DNS 等相關配置。然後 compute node 在 power on 之後會透過 DHCP/PXE 取得 image 並進行開機:

•    如果是第一次開機會先執行一個完整的部署(包含了硬碟切割等工作)
•    之後的每一次開機則會略過完整安裝過然後將 head node 的 software image 設定同步到本地磁碟

當然,任何時候我們都可以對 compute node 重新進行完整部署。這樣的設計,最大的好處就不必擔心 computer node 的軟體損毀(不管是人為還是意外操作),只要重新開機就可以還原出預設的作業環境。大大降低了 cluster 主機的管理工作量與複雜性。

________________________________________
用 BCM 來管理 K8S

當 BCM 完成節點部署工作之後,就可以進一步在其上安裝 Kubernetes Cluster。安裝過程也是非常簡單,指定好 control-node 與 worker-node 的角色就等待它自動完成部署即可。

技術上,BCM 也是使用 kubeadm 這套標準的 K8S 安裝工具執行部署工作,當然會順帶完成 PKI 憑證相關的配置。BCM 支援的 K8S 版本也是非常及時(執筆時2025年6月已經部署 v1.33.2 了)。預設上 BCM 會選用 calico 作為 CNI,也會幫忙設定好 nginx-ingress 以及一個 local-path 的 Storage Class。值得一提的是,BCM 的 etcd 是獨立部署的,可以部署在專用的節點上(預設會在 head node)而不是跟 control-plan 綁在一起。

還有一個不錯的地方,就是 BCM 的 user manager 工具會自動幫忙配置 kubeconfig 到每一個使用者的環境中,甚至連 ssh key-less 連線也一同配置好!這確認讓我感覺到 BCM 的貼心,讓管理員不用操心太多繁瑣的 routin 工作,尤其是當節點數量很多的時候。


BCM User Manager


然而,某次跟客戶開會的時候,客戶提出了一個問題:

可不可以限制某些使用者或群組只能登入某些節點就好?

帶著這個問題查閱了一下 BCM 的管理手冊,發現 BCM 針對使用者內建的配置選項只有三種:

•    全全部開放(default)
•    全部禁止
•    隨工作開放

稍微研究了一下第三個選項,就是當 user job 部署在節點上就會自動開放使用者登入,這跟客戶的需求不完全一致,客戶是要反過來:讓使用者登入到指定的節點上運行工作。

然而,從手冊上也發現登入限制其實透過 Linux PAM 模組來設定的。於是靈機一動,手動增加了一個 pam_exec.so 的模組設定,然後再結合 shell script 與 global config file 來判斷使用者是否符合條件,從而讓 PAM 能否通過登入請求。管理員只需要維護一份配置檔就可以輕鬆控制哪些使用者可以登入到哪些節點了:


限制 User 登入節點

雖然很土炮,但也非常簡單實用,補充了 BCM 沒有的功能。由於底層作業系統是 Linux,對 Linux 管理有足夠經驗能力的維護者來說,BCM 其實可以提供非常大的彈性空間,只要對 soft image 的目錄結構與 BCM 配置路徑稍加了解就不難。

________________________________________
其他管理

一旦 cluster 建置完成,我們就可以利用 BCM 內建的各種監控儀表板掌握整個 cluster 的運行狀況:

BCM Dashboard

除了內建的 dashboard,BCM 同時也將 metrics server 與 prometheus 都部署好了,省卻了很多事後安裝工作:

Prometheus Dashboard

BCM 也可以讓我們設定內部 image repository 的連線與認證,docker registry 或 Harbor 都是支援的。

除了 K8S,BCM v11 版本內建還安裝了 Slurm (v24.11)與其他 HPC workload manager 軟體,並提供了配置工具執行 Workload 管理:


HPC Workload Manager

同時,BCM 也將 Jupyter Notebook 環境整合進來,以及提供了 Jupyter 配置工具來簡化部署程序:

Jupyter Wizard

________________________________________
洞見

根據我們對 Nvidia 技術方案的觀察,Nvidia 除了持續在鞏固與擴大原本的 GPU 硬體優勢之外,這幾年更是致力於整個 AI 生態的發展。
他們將很多開源的技術方案打包成微服務(NIM — Nvidia Inference Microservices),從模型到應用到流程一應俱全,並上架到 NGC catalog 平台讓使用者訂閱(某些僅開放給 Nvidia AI Enterprise 用戶),同時提供了非常豐富的 Helm Chart 與 Operator 大幅降低微服務的部署難度。

Nvidia NIM

然而,這些微服務容器極大部份必須依賴 Kubernetes(K8S) 平台才能運行使用。這對於專注於 AI 落地應用的用戶來說卻是多了一道障礙門檻。雖然坊間已經有不少 K8S 產品(例如 OpenShift, Tanzu, RKE, 等等),但對客戶來說,額外產生的建置與管理成本會是一個重要的考量,更會擔心這些平台的導入阻礙了整個 AI 落地進程。

GPU Operator Ecosystem

Nvidia 之所以會併購 BCM 這套工具,其目的也是非常明確的:

讓 Nvidia 的用戶在採購了硬體之後,可以無縫銜接到 Nvidia 精心打造的微服務體系,無須過分擔心 K8S 的平台障礙而專注投入到 AI 的應用落地方案中。

從使用經驗來看,BCM 的確在很大程度上改善了 K8S 叢集的管理難度,從硬體節點 cluster 到 K8S cluster 都兼顧到了。只要用戶目標瞄準 Nvidia 的 AI 應用而不企圖做過多其他的非份之想,用 BCM 來管理 K8S 其實是相當足夠了。這其實也是 Nvidia 的用心,我們深切體會到了!

________________________________________
END

聲明:文章圖片主要引用自 Nvidia 官網文件與手冊內容。