如果您使用的CUDA庫需要匹配更高版本的NVIDIA驅動,您需要升級節點的驅動版本。基于節點池升級節點NVIDIA驅動后,您可以批量管理集群中不同節點的NVIDIA驅動。本文介紹使用現有節點時,如何通過節點池升級節點NVIDIA驅動。
索引
使用限制
升級NVIDIA驅動的方式本質上是將節點從原有節點池中移除,然后再將該節點添加至新創建的節點池中。除目標節點外,原有節點池中可能存在其它節點,故無法在原有節點池中完成目標節點的NVIDIA驅動升級。節點的NVIDIA驅動升級僅必須通過節點移除。
在添加的過程中,會經歷重裝系統、安裝指定NVIDIA驅動等。請務必在執行升級操作前,確認該節點沒有正在運行的任務以及重要數據。為降低風險,建議您先升級一個節點,確認整個升級過程無誤后再批量升級。
注意事項
針對自定義驅動版本,有如下注意事項。
對于GPU驅動版本與您業務應用的兼容性(GPU驅動版本與CUDA庫版本的兼容性),您需要自行驗證,ACK不保證兩者之間的兼容性。
對于已經安裝GPU驅動、NVIDIA container runtime等GPU組件的自定義操作系統鏡像,ACK無法保證其提供的GPU驅動與ACK其他GPU組件兼容(例如監控組件等)。
如果您上傳自行提供的GPU驅動到OSS中,使用自定義的GPU節點驅動方式,可能引發GPU驅動與操作系統版本、ECS實例類型、Container Runtime等不兼容,繼而導致添加GPU節點失敗。您需要自行驗證,ACK無法保證節點添加的成功率。
基于節點池升級節點NVIDIA驅動介紹
集群默認驅動版本說明
集群版本 | 默認GPU驅動 | 是否支持自定義驅動 | 支持自定義驅動版本 |
1.14.8 | 418.181.07 | 是 |
|
1.16.6 | 418.87.01 | 否 | NA |
1.16.9 | 418.181.07 | 是 |
|
1.18.8 | 418.181.07 | 是 | |
1.20.4 | 450.102.04 | 是 | |
1.22.10 | 460.91.03 | 是 | |
1.24.3 | 460.91.03 | 是 |
基于節點池升級節點NVIDIA驅動的使用示例
如果使用節點池A管理集群中需要升級NVIDIA驅動版本至418.181.07的節點,當需要將任務調度到該驅動版本的節點上時,只需要將任務的selector指定為節點池A的標簽。
如果需要將集群中一部分節點的NVIDIA驅動升級至418.181.07版本,另一部分的節點升級至450.102.0版本,您可以將一部分節點添加至節點池A,另一部分節點添加至節點池B。
步驟一:確定NVIDIA驅動版本
選定NVIDIA驅動版本前,您需要確定所使用的CUDA庫與哪些NVIDIA驅動版本兼容。您可以參照下表查看CUDA庫與NVIDIA驅動的兼容關系,選擇合適的NVIDIA驅動版本。更多信息,請參見cuda-toolkit-release-notes。
CUDA Toolkit版本 | Linux x86_64驅動版本 |
CUDA 11.7 Update 1 | ≥515.65.01 |
CUDA 11.7 GA | ≥515.43.04 |
CUDA 11.6 Update 2 | ≥510.47.03 |
CUDA 11.6 Update 1 | ≥510.47.03 |
CUDA 11.6 GA | ≥510.39.01 |
CUDA 11.5 Update 2 | ≥495.29.05 |
CUDA 11.5 Update 1 | ≥495.29.05 |
CUDA 11.5 GA | ≥495.29.05 |
CUDA 11.4 Update 4 | ≥470.82.01 |
CUDA 11.4 Update 3 | ≥470.82.01 |
CUDA 11.4 Update 2 | ≥470.57.02 |
CUDA 11.4 Update 1 | ≥470.57.02 |
CUDA 11.4.0 GA | ≥470.42.01 |
CUDA 11.3.1 Update 1 | ≥465.19.01 |
CUDA 11.3.0 GA | ≥465.19.01 |
CUDA 11.2.2 Update 2 | ≥460.32.03 |
CUDA 11.2.1 Update 1 | ≥460.32.03 |
CUDA 11.2.0 GA | ≥460.27.03 |
CUDA 11.1.1 Update 1 | ≥455.32 |
CUDA 11.1 GA | ≥455.23 |
CUDA 11.0.3 Update 1 | ≥ 450.51.06 |
CUDA 11.0.2 GA | ≥ 450.51.05 |
CUDA 11.0.1 RC | ≥ 450.36.06 |
CUDA 10.2.89 | ≥ 440.33 |
CUDA 10.1 (10.1.105 general release, and updates) | ≥ 418.39 |
CUDA 10.0.130 | ≥ 410.48 |
CUDA 9.2 (9.2.148 Update 1) | ≥ 396.37 |
CUDA 9.2 (9.2.88) | ≥ 396.26 |
CUDA 9.1 (9.1.85) | ≥ 390.46 |
CUDA 9.0 (9.0.76) | ≥ 384.81 |
CUDA 8.0 (8.0.61 GA2) | ≥ 375.26 |
CUDA 8.0 (8.0.44) | ≥ 367.48 |
CUDA 7.5 (7.5.16) | ≥ 352.31 |
CUDA 7.0 (7.0.28) | ≥ 346.46 |
步驟二:移除節點
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
選中待升級驅動的節點,單擊批量移除,然后在移除節點對話框,選中自動排空節點(drain),并單擊確定。
步驟三:創建節點池并指定驅動版本
方式一:從驅動版本列表選擇驅動創建節點池
此種方式安裝驅動較為簡單。為節點池的節點打上標簽ack.aliyun.com/nvidia-driver-version=<驅動版本>
,然后將步驟二:移除節點中集群移除的節點添加到該節點池即可。
本小節以418.181.07驅動版本為例介紹整個操作流程。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
單擊右上角創建節點池,然后在創建節點池對話框中配置相關參數。
部分配置項說明如下。有關配置項的詳細說明,請參見創建ACK專有集群。
配置項
描述
虛擬交換機
按需填寫虛擬交換機和實例規格參數的取值。此信息用于節點擴容,而升級驅動屬于添加已有節點,無需使用此信息。
實例規格
操作系統
節點重新加入集群后所使用的操作系統。
期望節點數
可填寫實例數量為0。如果實例數量不為0,ACK將會創建新的實例。
單擊顯示高級選項。
在節點標簽參數欄添加標簽,單擊圖標,在鍵文本框輸入
ack.aliyun.com/nvidia-driver-version
,在值文本框輸入418.181.07
。關于容器服務提供的可用NVIDIA驅動版本,請參見集群默認驅動版本說明。
重要實例規格為ecs.ebmgn7或ecs.ebmgn7e的ECS,僅支持460.32.03之后的NVIDIA驅動版本。
參數配置完成后,單擊確認配置。
方式二:自定義驅動版本創建節點池
步驟1:自定義驅動版本
以下以上傳NVIDIA-Linux-x86_64-460.32.03.run驅動文件為例,介紹如何自定義驅動版本。您可以在NVIDIA官方網站下載驅動文件。
請將NVIDIA-Linux-x86_64-460.32.03.run放在OSS Bucket的根目錄下。
將NVIDIA-Linux-x86_64-460.32.03.run驅動文件上傳至OSS。具體操作,請參見上傳文件。
文件上傳成功后,在對象存儲管理頁左側導航欄,單擊文件管理,然后在文件管理頁面,單擊已上傳驅動文件右側操作列的詳情。
在詳情面板,關閉使用HTTPS開關,取消使用HTTPS的配置。
說明ACK創建集群時會通過URL拉取驅動文件,URL中使用協議為HTTP協議。OSS默認使用HTTPS協議。您需要單擊使用HTTPS按鈕,取消使用HTTPS的配置。
確認驅動文件配置信息,并記錄該文件的URL。
將URL拆成兩部分,即endpoint和runfile。
以
http://nvidia-XXX-XXX-cn-beijing.aliyuncs.com/NVIDIA-Linux-x86_64-460.32.03.run
為例,將其拆分為以下兩部分。endpoint:nvidia-XXX-XXX-cn-beijing.aliyuncs.com
runfile:NVIDIA-Linux-x86_64-460.32.03.run
步驟2:自定義驅動版本后,創建節點池
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
單擊右上角創建節點池,在創建節點池對話框中配置相關參數。
部分配置項說明如下。有關配置項的詳細說明,請參見創建ACK專有集群。
配置項
描述
虛擬交換機
按需填寫虛擬交換機和實例規格參數的取值。此信息用于節點擴容,而升級驅動屬于添加已有節點,無需使用此信息。
實例規格
操作系統
節點重新加入集群后所使用的操作系統。
期望節點數
可填寫實例數量為0。如果實例數量不為0,ACK將會創建新的實例。
單擊顯示高級選項。
在節點標簽參數欄添加標簽,單擊圖標。
輸入第一個標簽的鍵為
ack.aliyun.com/nvidia-driver-oss-endpoint
,值為nvidia-XXX-XXX-cn-beijing.aliyuncs.com
。輸入第二個標簽的鍵為
ack.aliyun.com/nvidia-driver-runfile
,值為NVIDIA-Linux-x86_64-460.32.03.run
。根據集群版本,輸入第三個標簽的鍵和值。
若集群版本為v1.18.8-aliyun.1,輸入鍵為
ack.aliyun.com/nvidia-fabricmanager-rpm
,值為nvidia-fabric-manager-460.32.03-1.x86_64.rpm
。若集群版本為v1.20.11-aliyun.1或v1.22.3-aliyun.1,輸入鍵為
ack.aliyun.com/nvidia-fabricmanager-tarball
,值為fabricmanager-linux-x86_64-460.32.03.tar.gz
。
參數配置完成后,單擊確認配置。
步驟四:添加節點到節點池
步驟五:驗證通過節點池升級節點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> nvidia-device-plugin-cn-beijing.192.168.8.14 1/1 Running 0 9d 192.168.8.14 cn-beijing.192.168.8.14 <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
預期輸出:
Sun Feb 7 04:09:01 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.181.07 Driver Version: 418.181.07 CUDA Version: N/A | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:07.0 Off | 0 | | N/A 27C P0 40W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:08.0 Off | 0 | | N/A 27C P0 40W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-SXM2... On | 00000000:00:09.0 Off | 0 | | N/A 31C P0 39W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-SXM2... On | 00000000:00:0A.0 Off | 0 | | N/A 27C P0 41W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
預期輸出表明,驅動版本為418.181.07,即節點池升級節點NVIDIA驅動成功。