kubernetes集群GPU节点的部署与使用

目标:将GPU加入k8s集群,并创建使用GPU的容器

环境:kubernetes 1.11

步骤:Device Plugin概述->GPU节点驱动与nvidia-docker安装配置->docker runtime配置->kubernetes组件安装并加入集群->kubelet配置->nvidia-device-plugin部署->运行测试

1.Device Plugin概述

Kubernetes v1.8 开始增加了 Alpha 版的 Device 插件,用来支持 GPU、FPGA、高性能 NIC、InfiniBand 等各种设备。这样,设备厂商只需要根据 Device Plugin 的接口实现一个特定设备的插件,而不需要修改 Kubernetes 核心代码。

Device 插件实际上是一个 gPRC 接口,需要实现 ListAndWatch() 和 Allocate() 等方法,并监听 gRPC Server 的 Unix Socket ,在 /var/lib/kubelet/device-plugins/ 目录中。

2.GPU节点驱动与nvidia-docker安装配置

此处节点已完成驱动和nvidia-docker的安装,后续需要再补充。

nvidia-smi

nvidia-docker version

3.docker runtime配置

修改docker runtime,指定为nvidia,此处需要优先安装nvidia-containter-runtime

(1)搜索nvidia-container-runtime版本

 yum search --showduplicates nvidia-container-runtime

因为GPU节点的docker版本为1.12.6,因此选用对应的版本

(2)安装

yum --setopt=obsoletes=0 install nvidia-container-runtime-1.1.0-1.docker1.12.6.x86_64

安装完成后在/usr/bin/目录下

(3)docker runtime修改

vim /lib/systemd/system/docker.service

修改如下部分:

重启服务:

systemctl daemon-reload

systemctl restart docker.service

4.kubernetes组件安装并加入集群

由于集群以kubeadm方式部署,因此新的节点需要安装node组件:

yum -y install kubeadm kubelet kubectl

加入集群:

kubeadm join命令,详情参考部署博文:https://blog.csdn.net/xingyuzhe/article/details/80507384

5.kubelet配置

1.11版本的kubelet配置在文件/etc/sysconfig/kubelet中

增加配置:

KUBELET_EXTRA_ARGS=--fail-swap-on=false --cadvisor-port=4194 --feature-gates=DevicePlugins=true

重启服务:

systemctl daemon-reload

systemctl restart kubelet

6.nvidia-device-plugin部署

创建部署文件:nvidia-device-plugin.yml

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: nvidia-device-plugin-daemonset
  namespace: kube-system
spec:
  template:
    metadata:
      # Mark this pod as a critical add-on; when enabled, the critical add-on scheduler
      # reserves resources for critical add-on pods so that they can be rescheduled after
      # a failure.  This annotation works in tandem with the toleration below.
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ""
      labels:
        name: nvidia-device-plugin-ds
    spec:
      tolerations:
      # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode.
      # This, along with the annotation above marks this pod as a critical add-on.
      - key: CriticalAddonsOnly
        operator: Exists
      containers:
      - image: nvidia/k8s-device-plugin:1.11
        name: nvidia-device-plugin-ctr
        securityContext:
          capabilities:
            drop: ["ALL"]
        volumeMounts:
          - name: device-plugin
            mountPath: /var/lib/kubelet/device-plugins
      volumes:
        - name: device-plugin
          hostPath:
            path: /var/lib/kubelet/device-plugins

在master节点上执行:kubectl create -f nvidia-device-plugin.yml

查看部署情况:kubectl get pods -n kube-system | grep nvidia

7.运行测试

查看GPU节点GPU卡数量

kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"

测试pod:gpu-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  restartPolicy: Never
  containers:
  - image: nvidia/cuda
    name: cuda
    command: ["nvidia-smi"]
    resources:
      limits:
        nvidia.com/gpu: 1

kubectl create -f gpu-pod.yaml

kubectl logs gpu-pod

 

slurm-gpu集群搭建是一种用于创建高性能计算环境的解决方案,它能够有效地利用多个GPU来加速任务执行。以下是关于如何搭建slurm-gpu集群的简要步骤: 1. 购买所需硬件:首先,您需要购买足够数量的GPU、服务器和交换机来组成集群。确保GPU和服务器的型号和配置都兼容并且能满足您的计算需求。 2. 安装并配置操作系统:在每个服务器上安装您选择的操作系统,并确保操作系统和组件的版本兼容。建议选择一个常用的Linux发行版,如Ubuntu或CentOS。 3. 安装Slurm:使用包管理器或从源代码编译安装Slurm调度系统。Slurm是一个开源的高性能计算和作业调度系统,为集群提供了任务分配和管理功能。 4. 配置Slurm集群:编辑Slurm配置文件以设置集群的参数,例如节点名称、队列配置、资源限制等。确保每个节点都被正确地添加到Slurm的集群配置中。 5. 安装GPU驱动程序:为每个服务器上的GPU安装正确的驱动程序,并确保它们在操作系统中正确识别和配置。 6. 测试和优化:在完成集群配置后,进行一些基准测试,以确保GPU可以被正确地调用和使用。优化Slurm和GPU驱动程序的配置,以最大程度地提高集群的性能。 7. 添加用户和作业:为集群上的用户创建账户,并允许他们提交作业。根据需要,在Slurm中配置用户权限和资源限制。 总结:通过购买适当的硬件,安装并配置操作系统、Slurm和GPU驱动程序,以及进行测试和优化,您可以成功地搭建一个slurm-gpu集群。此集群能够高效地利用多个GPU来加速计算任务的执行,为您提供一个强大的计算环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值