centos7.9中为k8s配置英伟达gpu调度

本文介绍如何在Linux环境下安装NVIDIA GPU驱动,并详细讲解了通过nvidia-docker2和k8s-device-plugin实现GPU资源在Kubernetes集群中的调度与使用。

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

1、Linux查看显卡信息:(ps:若找不到lspci命令,可以安装 yum install pciutils)
lspci | grep -i vga
2、使用nvidia GPU可以:
lspci | grep -i nvidia
3、查看显卡驱动
cat /proc/driver/nvidia/version

安装依赖环境:

yum install kernel-devel gcc -y

检查内核版本和源码版本,保证一致

ls /boot | grep vmlinu

rpm -aq | grep kernel-devel

在这里插入图片描述
屏蔽系统自带的nouveau

查看命令:
lsmod | grep nouveau
屏蔽成功之后是查询不到结果的

修改dist-blacklist.conf文件:
vim /lib/modprobe.d/dist-blacklist.conf

将nvidiafb注释掉:
#blacklist nvidiafb 

然后添加以下语句:
blacklist nouveau
options nouveau modeset=0

重建initramfs image步骤

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

dracut /boot/initramfs-$(uname -r).img $(uname -r)

修改运行级别为文本模式

systemctl set-default multi-user.target

重新启动

reboot

驱动下载

https://www.nvidia.cn/Download/index.aspx?lang=cn

在这里插入图片描述
安装过程

chmod +x NVIDIA-Linux-x86_64-460.80.run

./NVIDIA-Linux-x86_64-460.80.run

安装完成后测试

nvidia-smi

在这里插入图片描述
设置docker运行时

[root@node1 nvdai]# cat /etc/docker/daemon.json

{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

安装nvidia-docker2

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

更新仓库

DIST=$(sed -n 's/releasever=//p' /etc/yum.conf)

DIST=${DIST:-$(. /etc/os-release; echo $VERSION_ID)}

sudo yum makecache

安装

yum install nvidia-docker2

重启docker

systemctl daemon-reload
systemctl restart docker

安装k8s-device-plugin
在master节点上运行

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta4/nvidia-device-plugin.yml

查看可用的gpu

kubectl describe nodes

在这里插入图片描述
测试k8s中gpu的使用

vim gpu_test.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: ffmpeg-pod
spec:
  nodeName: wangzishen-ms-7846 #指定有gpu的节点
  containers:
    - name: ffmpeg-container
      image: nightseas/ffmpeg:latest #k8s中配置阿里的私有仓库遇到一些问题,暂时用公共镜像
      command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
      resources:
        limits:
          nvidia.com/gpu: 1 # 请求分配 1个 GPU
        requests:
           nvidia.com/gpu: '1'

创建pod

kubectl create -f  gpu_test.yaml

进入容器测试

kubectl exec ffmpeg-pod -it -- bash

下载视频

wget http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4

执行转码命令

ffmpeg -hwaccel cuvid -c:v h264_cuvid -i big_buck_bunny.mp4 -vf scale_npp=1280:720 -vcodec h264_nvenc out.mp4

查看gpu使用情况
在这里插入图片描述
一个gpu只能分配给一个pod。但是一个pod是由多个容器组成的,所以同一个pod的容器可以共享分配给当前pod的所有GPU,而且在配置中的gpu数量只能是整数,不可以像cpu一样调度一部分

### 安装和配置Kubernetes (K8s) 集群 #### 准备工作 为了在 CentOS 7.9 上成功安装并配置 Kubernetes 集群,需先准备三台服务器作为集群节点。每台机器应具备至少4核CPU、8GB内存以及40GB硬盘空间,并运行 CentOS 7.9 操作系统。 - **主节点**: `k8s-master`,内网 IP 地址为 `172.21.180.114` - **从节点1**: `k8s-node1`,内网 IP 地址为 `172.21.180.115` - **从节点2**: `k8s-node2`,内网 IP 地址为 `172.21.180.116` 这些硬件条件能够满足大多数中小型应用的需求[^1]。 #### 初始化环境设置 确保所有节点的时间同步服务已开启,并关闭防火墙和服务隔离策略(如 SELinux),以便各组件间正常通信。此外,在所有节点上执行以下命令来禁用 swap 分区: ```bash swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab ``` 这一步骤对于保证 K8s 的稳定性和性能至关重要。 #### 安装 Docker 和 kubeadm 工具包 更新 yum 软件源至最新状态后,依次安装所需的容器引擎 Docker 及 kubeadm 等工具集。具体操作可参照官方文档说明完成相应版本的选择与部署。 #### 创建主控节点 在选定为主节点的服务器上初始化集群: ```bash kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 此指令会启动必要的控制平面进程并将当前主机设为首Leader节点。完成后按照提示信息配置 `.kube/config` 文件路径指向 `/root/.kube/config` 并将其复制给普通用户使用。 接着加载网络插件Flannel以支持 Pod间的跨子网通讯功能: ```bash kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 此时可以通过查看Pod列表验证集群是否健康运转: ```bash kubectl get pods --all-namespaces ``` 如果一切顺利,则表示主节点已经就绪等待加入其他成员节点。 #### 加入工作节点到集群 获取用于添加新节点的令牌字符串并通过 SSH 登录目标机器执行相应的 join 命令实现自动注册过程。注意每次仅限于单次有效期限内的token连接请求;过期则需要重新生成新的凭证数据。 #### 安装 Dashboard UI 组件 为了让管理员更直观地管理集群资源状况,建议安装可视化界面——Dashboard。下载推荐配置文件并提交给 API Server 处理即可快速启用该特性: ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml ``` 最后确认所有 Pods 正常运行无误之后即宣告整个流程结束[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值