不同類型和版本的ACK叢集預設安裝不同版本的NVIDIA驅動。如果您想要更高版本的NVIDIA驅動,可以自訂安裝節點的NVIDIA驅動。本文介紹如何基於節點池標籤通過OSS URL自訂GPU節點的NVIDIA驅動版本。
注意事項
ACK不保證GPU驅動版本與CUDA庫版本的相容性,您需要自行驗證二者之間的適配性。
NVIDIA各卡型對驅動版本的更詳細的要求,請參見NVIDIA官方文檔。
對於已經安裝GPU驅動、NVIDIA Container Runtime等GPU組件的自訂動作系統鏡像,ACK無法保證其提供的GPU驅動與ACK其他GPU組件相容(例如監控組件等)。
通過節點池標籤指定GPU節點的驅動版本時,驅動安裝過程在添加節點時觸發,因此僅適用於新擴容或新添加的節點,現有節點將不受影響。如需對已有節點應用新驅動,請移除節點並重新添加已有節點。
執行個體規格為gn7和ebmgn7對510.xxx和515.xxx版本驅動存在相容性問題,建議使用關閉GSP的510以下的驅動版本(例如:470.xxx.xxxx)或525.125.06及其以上的驅動版本。
建立節點池過程中,如果您指定的驅動版本不存在於ACK支援的NVIDIA驅動版本列表,ACK將自動安裝預設驅動版本。若您指定了與最新作業系統不相容驅動版本,可能存在節點添加失敗的情況,需選擇目前支援的最新驅動版本。
如果您上傳自己的GPU驅動到OSS中,使用自訂的GPU節點驅動方式,可能引發GPU驅動與作業系統版本、ECS執行個體類型、Container Runtime等不相容,繼而導致添加GPU節點失敗。ACK無法保證節點添加的成功率,請您自行驗證。
步驟一:下載目標驅動
如果ACK支援的NVIDIA驅動版本列表未包含您的業務所需的驅動版本,您可以從NVIDIA官方網站下載目標驅動版本,本文以驅動版本550.90.07為例進行介紹。將驅動檔案NVIDIA-Linux-x86_64-550.90.07.run下載到本地。
步驟二:下載nvidia fabric manager
從NVIDIA YUM官方倉庫下載nvidia fabric manager,nvidia fabric manager的版本需和驅動版本一致。
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-550.90.07-1.x86_64.rpm步驟三:建立OSS Bucket
登入Object Storage Service控制台,建立OSS Bucket。具體操作,請參見建立儲存空間。
建議OSS Bucket所在地區與目標ACK叢集所在地區相同,為ACK節點安裝GPU驅動時,可以通過內網OSS Bucket拉取驅動。
步驟四:上傳驅動和nvidia-fabric-manager檔案到OSS Bucket
登入Object Storage Service控制台,上傳檔案NVIDIA-Linux-x86_64-550.90.07.run和nvidia-fabric-manager-550.90.07-1.x86_64.rpm至目標Bucket的根目錄。
重要請確保上傳檔案至OSS Bucket的根目錄,不要上傳至子目錄。
在目標Bucket頁面的左側導覽列,單擊,單擊已上傳檔案右側操作列的詳情,查看驅動檔案的詳情。
在詳情面板,關閉使用 HTTPS開關,取消使用HTTPS的配置。
重要ACK建立叢集時會通過URL拉取驅動檔案,URL使用的協議為HTTP協議。但OSS預設使用HTTPS協議。因此,請關閉使用 HTTPS開關。
在目標Bucket詳情頁,單擊左側導覽列的概覽,在頁面下方擷取內網訪問地址。
重要公網網域名稱拉取驅動檔案速度較慢,容易造成叢集添加GPU節點失敗,因此建議通過內網網域名稱(帶有-internal欄位)或加速網域名稱(帶有oss-accelerate欄位)拉取驅動檔案。
若您檔案拉取失敗,請參見OSS許可權控制調整Bucket的許可權控制策略。
步驟五:配置節點池標籤
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊左上方的建立節點池,並添加GPU節點。關於配置項的詳細說明,請參見建立和管理節點池,主要配置如下。
在節點標籤(Labels)參數欄添加標籤,單擊
表徵圖,添加如下標籤並替換相應的值。鍵
值
ack.aliyun.com/nvidia-driver-oss-endpoint步驟四中擷取的OSS Bucket內網訪問地址。
my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.comack.aliyun.com/nvidia-driver-runfile步驟一中下載的NVIDIA驅動的名稱。
NVIDIA-Linux-x86_64-550.90.07.runack.aliyun.com/nvidia-fabricmanager-rpm步驟二中下載的nvidia fabric manager的名稱。
nvidia-fabric-manager-550.90.07-1.x86_64.rpm
步驟六:驗證節點池自訂安裝NVIDIA驅動是否成功
執行以下命令,查看帶有
component: nvidia-device-plugin標籤的Pod。kubectl get po -n kube-system -l component=nvidia-device-plugin -o wide預期輸出:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nvidia-device-plugin-cn-beijing.192.168.1.127 1/1 Running 0 6d 192.168.1.127 cn-beijing.192.168.1.127 <none> <none> nvidia-device-plugin-cn-beijing.192.168.1.128 1/1 Running 0 17m 192.168.1.128 cn-beijing.192.168.1.128 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.12 1/1 Running 0 9d 192.168.8.12 cn-beijing.192.168.8.12 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.13 1/1 Running 0 9d 192.168.8.13 cn-beijing.192.168.8.13 <none> <none>預期輸出表示,NODE列的叢集中剛添加的節點對應的Pod名稱為
nvidia-device-plugin-cn-beijing.192.168.1.128。執行以下命令查看節點的驅動版本是否符合預期。
kubectl exec -ti nvidia-device-plugin-cn-beijing.192.168.1.128 -n kube-system -- nvidia-smi預期輸出:
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla P100-PCIE-16GB On | 00000000:00:08.0 Off | Off | | N/A 31C P0 26W / 250W | 0MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+預期輸出表明,驅動版本為550.90.07,即通過節點池自訂安裝NVIDIA驅動成功。
其他方式
使用CreateClusterNodePool 建立節點池時,可在目標節點池的配置中設定自訂驅動的OSS URL。範例程式碼如下:
{
// 其他部分省略
......
"tags": [
{
"key": "ack.aliyun.com/nvidia-driver-oss-endpoint",
"value": "xxxx"
},
{
"key": "ack.aliyun.com/nvidia-driver-runfile",
"value": "xxxx"
},
{
"key": "ack.aliyun.com/nvidia-fabricmanager-rpm",
"value": "xxxx"
}
],
// 其他部分省略
......
}