如何在k8s集群中安装nvidia、cuda并使用GPU进行训练

本文详述在已有k8s集群的CentOS系统中安装NVIDIA GPU、CUDA、cuDNN的过程,包括安装GCC、确认硬件、安装驱动、CUDA和cuDNN,以及设置nvidia-docker的步骤。文章总结了安装过程中的常见问题和解决方案,适合GPU使用初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在k8s集群中安装nvidia、cuda并使用GPU进行训练

在写具体步骤前,发表一下自己的感想体会,因为在这过程中,踩过很多坑,对于像我们这种小白,踩坑真的是无处不在,真的很感谢网上一些大神细心地帮助,也感谢其它大神分享的博客。所以自己实现之后也想把这过程中遇到的坑和解决的方法总结总结,希望对大家有用。

本文主要是针对已经部署好了k8s集群的,基于centos系统,截止k8s 1.8版本,对GPU的使用支持还是停留在实验阶段,只支持nvidia的GPU,在k8s上使用GPU,先要装好几样东西。

安装流程:

1、关闭UEFI。这个很重要,因为如果不关闭可能会导致安装nvidia驱动的时候无法加载kernel模块,我就在这浪费了好多时间。具体做法是开机按F2进入BIOS设置,通常在BOOT或Secure选项卡上,把安全启动[Secure BOOT],改为[Disable],如果不是的话自己去搜搜相应的。

2、确认自己主机有nvidia的显卡。

输入命令lspci | grep -i nvidia 查看nvidia显卡情况。

3、检查系统版本,确保系统支持(需要Linux-64bit系统)

#uname -m && cat /etc/*release

4、根据nvidia显卡的信息和系统下载相应的安装包。

NVIDIA-Linux-x86_64-381.22.run # 最新显卡驱动

cuda_9.0.61_375.26_linux.run # 最新CUDA安装包

cudnn-8.0-linux-x64-v6.0.tgz # cudnn库v6.0

(1)登录NVIDIA官网http://www.geforce.cn/drivers设置驱动检索条件(注意尽量设置语言英文):

(2)官网下载cuda-rpm包https://developer.nvidia.com/cuda-downloads,一定要对应自己的版本。

(3)下载cudnn需要注册https://developer.nvidia.com/rdp/cudnn-download,注意有些浏览器是注册不了的,我就踩了这个坑。

5、安装gcc gcc-c++

#yum install gcc gcc-c++

6、查看内核是否一致。

#uname -r 

#rpm -q kernel-devel

#rpm -q kernel-headers

如果一致的话这步可以跳过,输入rpm -q kernel-devel时有可能是not found,说明没有安装,有显示说明已安装。

安装kernel-devel和kernel-headers。

#sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

或者

#yum install kernel-devel

#yum install kernel-headers

如果安装完发现不一致的话需要 yum -y update

7、安装cuda(最好是先安装好这个再去安装驱动,不然会nvidia的安装不会很顺利,我就踩了这个坑。)

#sudo rpm -i cuda-repo-rhel7-8-0-local-ga2-8.0.61-1.x86_64.rpm

#sudoyum clean all

#sudoyuminstall cuda

可能会报错,

(1)原因是缺少2个包,装第一个:

#sudo vim /etc/yum.repos.d/linuxtech.testing.repo

输入:

[linuxtech-testing]

name=LinuxTECH Testing

baseurl=http://pkgrepo.linuxtech.net/el6/testing/

enabled=0

gpgcheck=1

gpgkey=http://pkgre

<think>嗯,用户想了解在Kubernetes集群中配置和使用GPU支持。首先,我需要回忆相关的步骤和组件。根据之前的引用内容,有几个关键点:GPU设备插件、NVIDIA运行时、Operator的使用,还有Helm chart的安装。 首先,用户需要确认节点有GPU且驱动已经安装。这应该是基础,因为如果没有驱动,后续的步骤都无法进行。然后,安装NVIDIA容器运行时,确保容器能访问GPU资源。接下来,部署GPU设备插件,这样K8s才能识别到节点上的GPU。这部分引用了引用[1]和[4],提到的gpu-device-plugin和NVIDIA runtime的配置。 然后,可能要考虑使用GPU Operator,这样能简化管理,自动处理驱动和插件的安装。引用[2]和[3]提到了Kubernetes Operator和Helm安装的方法。特别是Helm v3和GPU Operator chart的安装步骤,用户可能需要按照指南来操作。 配置Pod资源请求部分,用户需要在yaml文件中指定GPU资源,比如nvidia.com/gpu: 1,这样调度器才能正确分配。这部分可能需要强调资源声明的必要性,避免Pod无法使用GPU。 测试和验证阶段,用户可能需要运行一个示例应用,比如nvidia-smi命令,确认GPU可用。同时,日志监控和资源监控也是确保正常运行的关键。 高级配置方面,MIG和共享GPU可能会是用户后续的需求,但需要根据具体硬件支持情况来处理。最后,运维管理部分,升级驱动和兼容性检查也是需要注意的点。 用户可能遇到的问题包括驱动不兼容、节点未正确识别GPU、资源请求未正确配置等,需要逐步排查。同时,参考提供的文档链接,如NVIDIA安装指南,能帮助用户更详细地操作。 总结步骤应该是:节点准备→安装运行时→部署插件→使用Operator→配置Pod→测试→高级功能。这样结构清晰,用户能一步步跟随操作。同时,相关问题可以引导用户进一步学习优化方法和故障排除。</think>### 如何在K8s集群中配置和使用GPU支持 #### 一、基础环境准备 1. **GPU节点驱动安装** 确保集群中所有GPU节点已安装NVIDIA驱动程序。可通过以下命令验证: ```bash nvidia-smi # 查看GPU状态和驱动版本 ``` 若未安装,需根据操作系统和GPU型号安装对应驱动[^4]。 2. **配置NVIDIA容器运行时** 容器使用GPU需依赖NVIDIA Container Toolkit。安装步骤如下: ```bash distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker # 重启容器运行时 ``` 引用NVIDIA官方文档。 --- #### 二、Kubernetes集群配置 1. **部署NVIDIA GPU设备插件** GPU设备插件(如`nvidia-device-plugin`)负责向K8s上报GPU资源: ```bash kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml ``` 验证GPU资源可见性: ```bash kubectl describe node <gpu-node> | grep nvidia.com/gpu ``` 输出应显示GPU数量(如`nvidia.com/gpu: 1`)[^1]。 2. **使用GPU Operator(推荐)** NVIDIA GPU Operator可自动化管理驱动、容器工具链和设备插件: ```bash helm repo add nvidia https://helm.ngc.nvidia.com/nvidia helm install gpu-operator nvidia/gpu-operator --namespace gpu-operator --create-namespace ``` 该Operator会自动检测节点部署所需组件[^3]。 --- #### 三、Pod配置GPU资源 1. **声明GPU资源请求** 在Pod配置中指定GPU资源需求: ```yaml apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: cuda-container image: nvidia/cuda:12.0-base command: ["sleep", "infinity"] resources: limits: nvidia.com/gpu: 1 # 申请1个GPU ``` 2. **验证GPU访问** 进入Pod执行命令: ```bash kubectl exec -it gpu-pod -- nvidia-smi ``` 应输出与宿主机相同的GPU信息。 --- #### 四、高级配置 1. **GPU共享与时间片划分** 通过`nvidia-device-plugin`的`sharing`策略,可实现GPU显存或算力分割: ```yaml # 修改设备插件配置 args: - --sharing-strategy=time-slicing - --default-sharing=time-slicing ``` 2. **多实例GPU(MIG)支持** 对于A100/A30等支持MIG的GPU,可分割为多个独立实例: ```bash # 节点配置MIG模式 nvidia-smi -i 0 -mig 1 ``` --- #### 五、运维与监控 1. **GPU指标监控** 部署DCGM Exporter和Prometheus,采集GPU利用率、显存等指标: ```bash helm install dcgm-exporter nvidia/dcgm-exporter ``` 2. **驱动升级与兼容性** 使用GPU Operator时,驱动版本由Operator统一管理,需注意K8s版本与NVIDIA组件兼容性[^2]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值