Kubernetes 使用 containerd 實現 GPU 支持及 GPU Operator 部署指南

目錄

Kubernetes 使用 containerd 實現 GPU 支持及 GPU Operator 部署指南

一、為什么 containerd 是趨勢?

二、目標

三、前提條件

四、方式一:containerd + nvidia-container-toolkit(基礎方式)

1?? 安裝 NVIDIA Container Toolkit

2?? 修改 containerd 配置文件

3?? 重啟 containerd 服務

4?? 安裝 Kubernetes Device Plugin(GPU 插件)

5?? 驗證 GPU 使用

五、方式二:使用 NVIDIA GPU Operator(推薦)

1?? 安裝 Operator Lifecycle Manager(OLM)

2?? 安裝 NVIDIA GPU Operator

3?? 查看 GPU Operator 組件運行情況

4?? 測試 Pod 是否能調度 GPU

六、問題排查建議

七、總結


Kubernetes 使用 containerd 實現 GPU 支持及 GPU Operator 部署指南

本文詳細介紹在使用 containerd 作為容器運行時 的 Kubernetes 集群中,如何配置 NVIDIA GPU 支持,包括兩種方式:

  • 使用 nvidia-container-toolkit + device plugin 實現基礎 GPU 支持

  • 使用 NVIDIA GPU Operator 實現自動化驅動與插件部署


一、為什么 containerd 是趨勢?

Kubernetes 從 1.20 開始默認不再支持 dockershim,主流發行版(如 kubeadm、k3s、OpenShift)都逐漸轉向使用 containerd 或 CRI-O。與 Docker 相比,containerd 更輕量、啟動更快,并對 CRI 接口支持原生。


二、目標

  • 在 containerd 環境中啟用 GPU 支持

  • 支持 Kubernetes 使用 GPU 資源調度和運行

  • 實現 AI 推理/訓練等任務運行

  • 可選:通過 GPU Operator 自動完成驅動+插件部署


三、前提條件

  • Ubuntu 18.04/20.04/22.04 系統(CentOS 也可)

  • 安裝 NVIDIA 驅動(nvidia-smi 正常工作)

  • Kubernetes 集群已安裝,容器運行時為 containerd(可用 crictl info 驗證)

  • 節點具備 NVIDIA GPU 硬件


四、方式一:containerd + nvidia-container-toolkit(基礎方式)

1?? 安裝 NVIDIA Container Toolkit

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

2?? 修改 containerd 配置文件

生成默認配置:

sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null

添加 GPU 運行時支持:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]runtime_type = "io.containerd.runc.v2"[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]BinaryName = "/usr/bin/nvidia-container-runtime"

可選設置默認運行時(非必須):

[plugins."io.containerd.grpc.v1.cri".containerd]default_runtime_name = "nvidia"

3?? 重啟 containerd 服務

sudo systemctl restart containerd

4?? 安裝 Kubernetes Device Plugin(GPU 插件)

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml

5?? 驗證 GPU 使用

apiVersion: v1
kind: Pod
metadata:name: gpu-test
spec:containers:- name: cudaimage: nvidia/cuda:12.8.1-baseresources:limits:nvidia.com/gpu: 1command: ["nvidia-smi"]

部署并查看日志:

kubectl apply -f gpu-test.yaml
kubectl logs gpu-test

五、方式二:使用 NVIDIA GPU Operator(推薦)

GPU Operator 是 NVIDIA 提供的 全自動化部署解決方案,支持自動完成:

  • 驅動安裝(包含 DKMS 模塊編譯)

  • device plugin、DCGM、NCCL 插件部署

  • 實時健康監控(dcgm-exporter)

  • 容器內自動注入運行時


1?? 安裝 Operator Lifecycle Manager(OLM)

kubectl create -f https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.25.0/crds.yaml
kubectl create -f https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.25.0/olm.yaml

2?? 安裝 NVIDIA GPU Operator

kubectl create namespace gpu-operator
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/gpu-operator/main/deployments/gpu-operator.yaml -n gpu-operator

3?? 查看 GPU Operator 組件運行情況

kubectl get pods -n gpu-operator

所有組件 Running 表示部署成功。會自動創建如下組件:

  • 驅動 DaemonSet

  • device plugin

  • validation webhook

  • DCGM exporter


4?? 測試 Pod 是否能調度 GPU

apiVersion: v1
kind: Pod
metadata:name: gpu-operator-test
spec:containers:- name: cudaimage: nvidia/cuda:12.8.1-baseresources:limits:nvidia.com/gpu: 1command: ["nvidia-smi"]

六、問題排查建議

問題原因與解決辦法
nvidia-smi 無法使用NVIDIA 驅動未安裝或損壞
Pod 報 nvidia.com/gpu 不可分配device plugin 未正常運行 / 節點無 GPU
鏡像拉取失敗Docker Hub 被墻,建議配置 containerd 的 hosts.toml 使用加速器
Operator 安裝失敗Kubernetes 版本過舊 / OLM 安裝不全

七、總結

對比項containerd + toolkit 手動部署GPU Operator 自動部署
安裝復雜度中等(需配置 containerd + plugin)簡單(自動完成所有驅動與插件安裝)
可控性更自由,可自定義插件版本自動化,適合標準化部署
推薦適用場景內部集群測試、定制運行時企業生產環境、大規模 GPU 節點管理

如果你希望構建一套可重復部署的 GPU 支持方案,GPU Operator 是首選。如果只想在已有 containerd 集群上做最小化改造,nvidia-container-toolkit 同樣高效可靠。


如果你需要完整的 config.toml 示例或 Operator CR 配置,我可以為你補充。是否需要?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80500.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80500.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80500.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 2918. 數組的最小相等和 中等

給你兩個由正整數和 0 組成的數組 nums1 和 nums2 。 你必須將兩個數組中的 所有 0 替換為 嚴格 正整數,并且滿足兩個數組中所有元素的和 相等 。 返回 最小 相等和 ,如果無法使兩數組相等,則返回 -1 。 示例 1: 輸入&#xf…

猿人學第十二題-js入門

1. 鏈接 https://match.yuanrenxue.cn/match/12 2. 抓包分析 2.1. m參數 通過觀察,只有m參數要解決: 3. 逆向分析 3.1. 跟棧 直接跟棧吧,一下就出結果了: 可以看到m其實很簡單,就是固定字符串 當前頁數&#xf…

雙系統電腦中如何把ubuntu裝進外接移動固態硬盤

電腦:win11 ubuntu22.04 實體機 虛擬機:VMware17 鏡像文件:ubuntu-22.04.4-desktop-amd64.iso 或者 ubuntu20.4的鏡像 外接固態硬盤1個 一、首先win11中安裝vmware17 具體安裝方法,網上很多教程 二、磁盤分區 1.在筆…

202535| Kafka架構與重要概念+冪等性+事務

好的!以下是關于 Kafka 架構 以及其 重要概念 的詳細介紹,結合 Mermaid 圖形 和 表格,幫助你更好地理解各個概念的關系和作用。 Kafka 架構與重要概念 Kafka 是一個分布式消息系統,廣泛應用于日志收集、流處理、事件驅動架構等場…

從0開始學習大模型--Day05--理解prompt工程

提示詞工程原理 N-gram:通過統計,計算N個詞共同出現的概率,從而預測下一個詞是什么。 深度學習模型:有多層神經網絡組成,可以自動從數據中學習特征,讓模型通過不斷地自我學習不斷成長,直到模型…

Amazing晶焱科技:系統級 EOS 測試方法 - System Level EOS Testing Method

系統上常見的EOS測試端口以AC電源、電話線(RJ11)、同軸電纜(coaxial cable)以及以太網絡(RJ45)最常見,這些端口因有機會布線至戶外的關系,受到EOS/Surge沖擊的幾率也大大提升。因此電…

數據結構—(概述)

目錄 一 數據結構,相關概念 1. 數據結構: 2. 數據(Data): 3. 數據元素(Data Element): 4. 數據項: 5. 數據對象(Data Object): 6. 容器(container): 7. 結點(Node)&#xff…

Vue 兩種導航方式

目錄 一、聲明式導航 二、編程式導航 三、兩句話總結 一、聲明式導航 1. 傳參跳轉&#xff1a; <router-link :to"/user?nameCHEEMS&id114514">Query傳參 </router-link><router-link :to"/user?參數名1參數值1&參數名2參數值2&a…

QTableWidget實現多級表頭、表頭凍結效果

最終效果&#xff1a; 實現思路&#xff1a;如果只用一個表格的話寫起來比較麻煩&#xff0c;可以考慮使用兩個QTableWidget組合&#xff0c;把復雜的表頭一個用QTableWidget顯示&#xff0c;其他內容用另一個QTableWidget。 #include "mainwindow.h" #include &qu…

2025年客運從業資格證備考單選練習題

客運從業資格證備考單選練習題 1、從事道路旅客運輸活動時&#xff0c;應當采取必要措施保證旅客的人身和財產安全&#xff0c;發生緊急情況時&#xff0c;首先應&#xff08; &#xff09;。 A. 搶救財產 B. 搶救傷員 C. 向公司匯報 答案&#xff1a;B 解析&#xff1a;…

python打卡day21

常見的降維算法 知識點回顧&#xff1a; LDA線性判別PCA主成分分析t-sne降維 之前學了特征降維的兩個思路&#xff0c;特征篩選&#xff08;如樹模型重要性、方差篩選&#xff09;和特征組合&#xff08;如SVD/PCA&#xff09;。 現在引入特征降維的另一種分類&#xff1a;無/有…

專業級軟件卸載工具:免費使用,徹底卸載無殘留!

在數字生活節奏日益加快的今天&#xff0c;我們的電腦就像每天都在"吃進"各種軟件。但您是否注意到&#xff0c;那些看似消失的程序其實悄悄留下了大量冗余文件&#xff1f;就像廚房角落里積攢的調味瓶空罐&#xff0c;日積月累就會讓系統變得"消化不良"。…

【Linux】基礎 IO(一)

&#x1f4dd;前言&#xff1a; 這篇文章我們來講講Linux——基礎IO主要包括&#xff1a; 文件基本概念回顧 C文件的操作介紹系統關于文件的基本操作 &#x1f3ac;個人簡介&#xff1a;努力學習ing &#x1f4cb;個人專欄&#xff1a;Linux &#x1f380;CSDN主頁 愚潤求學 …

Java 原生實現代碼沙箱之Java 程序安全控制(OJ判題系統第2期)——設計思路、實現步驟、代碼實現

在看這一期之前&#xff0c;需要先看上一期的文章&#xff1a; Java 原生實現代碼沙箱&#xff08;OJ判題系統第1期&#xff09;——設計思路、實現步驟、代碼實現-CSDN博客 Java 程序可能出現的異常情況 1、執行超時 占用時間資源&#xff0c;導致程序卡死&#xff0c;不釋…

常見的降維算法

作業&#xff1a; 自由作業&#xff1a;探索下什么時候用到降維&#xff1f;降維的主要應用&#xff1f;或者讓ai給你出題&#xff0c;群里的同學互相學習下。可以考慮對比下在某些特定數據集上t-sne的可視化和pca可視化的區別。 一、什么時候用到降維&#xff1f; 降維通常…

理解Yocto項目中`${D}`作為模擬目標系統根文件結構的臨時目錄

在Yocto項目中,理解${D}作為模擬目標系統根文件結構的臨時目錄,可以通過以下具象化的比喻和結構解析來把握其核心邏輯: 一、沙盒模型:構建系統的“實驗場地” ${D}的作用類似于建筑師在施工前搭建的1:1實體模型。它完全模仿目標設備的文件系統布局(如/usr/bin、/etc等目錄…

第十課認識約數

課堂學習&#xff1a; 情景引入&#xff1a; 今天我們來認識一下數學中的約數關系&#xff0c;上節課我們了解完倍數之后就已經對約數有了基本的概念&#xff01; 我們按照是否有余數&#xff0c;可以把他們分成兩類 在整數除法中&#xff0c;如果商是整數沒有余數&#x…

【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用

目錄 一、getters 二、 mapState 三、 mapGetters 四、 mapMutations 五、 mapActions 學到這兒來個小總結&#xff1a;四個map方法的使用 總結不易~ 本章節對我有很大的收獲&#xff0c; 希望對你也是&#xff01;&#xff01;&#xff01; 本節素材已上傳至Gitee&…

html object標簽介紹(用于嵌入外部資源通用標簽)(已不推薦使用deprecated,建議使用img、video、audio標簽)

文章目錄 HTML <object> 標簽詳解基本語法與核心屬性關鍵屬性解析1. **data**2. **type**3. **width & height**4. **name** 嵌入不同類型的資源1. **嵌入圖像**2. **嵌入音頻**3. **嵌入視頻**4. **嵌入 PDF** 參數傳遞與回退內容**參數&#xff08;<param>&a…

警備,TRO風向預警,In-N-Out Burgers維權風暴來襲

本案是TME律所代理的5月首案&#xff0c;傳奇連鎖快餐品牌In-N-Out Burgers委托維權&#xff01; 案件基本情況&#xff1a; 起訴時間&#xff1a;2025-5-1 案件號&#xff1a;25-cv-04767 品牌&#xff1a;In-N-Out 原告&#xff1a;In-N-Out Burgers 原告律所&#xff…