如何优雅的让 Kubernetes 集群使用 GPU 节点

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !3296ddbef3297f2353467a024ecf8791.png


如何让你的 Kubernetes 集群使用 GPU 节点

CUDA 驱动程序

如果您还没有这样做,请确保您已在 GPU 节点上安装了 NVIDIA CUDA 驱动程序。CUDA是来自 nvidia 的并行计算平台。

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

成功安装后,nvidia-smi终端中的命令应该会提供与此类似的输出。在这个节点上,我有两个 GPU。请注意,CUDA 工具包的更新版本比我这里的可用。

05f3d20e0e5563a10524ce992cc9d58a.png
用于 Docker 的 NVIDIA 容器工具包

下一步是为 docker 安装 nvidia 容器工具包。根据您拥有的操作系统版本,说明可能略有不同。如果有疑问,您可以随时查看NVIDIA 文档。

https://docs.nvidia.com/datacenter/cloud-native/kubernetes/dcgme2e.html#install-nvidia-container-toolkit-previously-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
$ yum update
$ yum install -y nvidia-docker2

我们需要将 docker 的默认容器运行时更改为 nvidia。我们可以通过编辑文件/etc/docker/daemon.jsonfile 并更改default-runtime.

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

是时候重新启动 docker以使更改生效。

$ systemctl daemon-reload
$ systemctl restart docker

现在我们可以通过运行 nvidia 提供的简单镜像来测试我们的 docker 环境。

$ docker run --rm -it nvcr.io/nvidia/cuda:10.2-base nvidia-smi

您应该会看到与此类似的输出。如上所述,您当然可以将来自 nvidia的 docker 镜像与更高版本的  cuda 工具包一起使用。

8ea31462ec1fa22190c05fc808a7b4ba.png
用于 Kubernetes 的 NVIDIA 设备插件

我们验证了 docker 环境已成功配置为支持 GPU加速容器。我们只需再迈出一步,我们也将为 Kubernetes 设置做好准备。让我们安装 NVIDIA 设备插件,以便我们的 Kubernetes 集群可以使用 GPU。最简单的方法是使用helm安装这个插件。如果没有 helm,安装也很简单。转到您的主节点并执行以下应安装 helm 的命令。

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
   && chmod 700 get_helm.sh \
   && ./get_helm.sh

您将看到 helm 已安装。

Downloading https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm

我们将 nvidia设备插件添加到helm存储库。

$ helm repo add nvdp https://nvidia.github.io/k8s-device-plugin \
   && helm repo update

现在让我们安装插件。

$ helm install --generate-name nvdp/nvidia-device-plugin

您可以通过检查kube-system命名空间中的 pod来验证已安装的插件。

$ kubectl get pods -n kube-system|grep -i nvidia
nvidia-device-plugin-daemonset-tl268                      1/1     Running   3          4h
nvidia-device-plugin-daemonset-v2dn8                      1/1     Running   8          4h
测试一下

让我们测试我们的 Kubernetes 设置。为此,让我们创建一个 yaml 部署文件,例如,gpudemo-vectoradd.yaml包含以下内容。我们正在使用运行 GPU 的 nvidia cuda 示例容器。

apiVersion: v1
kind: Pod
metadata:
  name: gpu-demo-vectoradd
spec:
  restartPolicy: OnFailure
  containers:
  - name: cuda-vector-add
    image: "nvidia/samples:vectoradd-cuda10.2"
    resources:
      limits:
         nvidia.com/gpu: 1

部署我们的 yaml文件。

$ kubectl apply -f gpudemo-vectoradd.yaml

检查Pod

$ kubectl get pods |grep gpu
gpu-demo-vectoradd               0/1     Completed   0          13s

检查日志。它应该是这样的。

$ kubectl logs gpu-demo-vectoradd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

我们验证了Kubernetes集群设置为运行GPU加速容器!在下一篇文章中,让我们看看如何暴露和监控这些GPU指标。

参考资料

[1]

参考地址: https://medium.com/@rajupavuluri/how-to-enable-your-kubernetes-cluster-to-use-gpu-nodes-1b2771b4a7f6

本文转载自:「云原生CTO」,原文:https://tinyurl.com/3nu9yuup,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

b6b98e103b6144520c65a1252f401861.gif

6c1420160112551ea2905b8f129ec0d2.png

你可能还喜欢

点击下方图片即可阅读

bb3a31f3ee999dcfc4f40cee642bf4cd.png

『小众摄影』01 期 :网红重庆•千年古镇磁器口

f0afc2e0b83216aed6a7deb31b1708fd.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

272c7f5278079939cc954b058cbe3eeb.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS 7上配置Kubernetes GPU节点,你需要完成以下步骤: 1. 安装Nvidia显卡驱动:按照之前的回答中提到的步骤,在CentOS 7上安装并配置Nvidia显卡驱动。 2. 安装DockerKubernetes通常使用Docker作为容器运行时。你可以按照Docker官方文档的说明,在CentOS 7上安装Docker。 3. 在Kubernetes Master节点上安装NVIDIA Device Plugin:在Master节点上运行以下命令来安装NVIDIA Device Plugin: ``` kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml ``` 4. 在GPU节点上设置标签:在每个拥有GPU节点上,使用以下命令来添加`nvidia.com/gpu`标签: ``` kubectl label nodes <your-node-name> nvidia.com/gpu=true ``` 将`<your-node-name>`替换为实际的节点名称。 5. 部署GPU应用程序:现在你可以在Kubernetes中部署使用GPU的应用程序了。通过创建一个Pod配置文件,指定需要使用GPU容器,并在其中添加相应的资源限制和设备映射。例如,你可以创建一个名为`gpu-pod.yaml`的文件,内容如下: ``` apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: gpu-container image: <your-gpu-image> resources: limits: nvidia.com/gpu: 1 ``` 将`<your-gpu-image>`替换为实际的GPU应用程序镜像。 6. 在节点上部署Pod:使用以下命令在GPU节点上部署Pod: ``` kubectl create -f gpu-pod.yaml ``` 7. 验证GPU节点:运行以下命令来验证GPU节点是否正常工作: ``` kubectl get nodes -o wide ``` 你应该能够看到节点的`nvidia.com/gpu`标签为`true`。 通过以上步骤,你应该能够在CentOS 7上成功配置Kubernetes GPU节点,并在其中部署使用GPU的应用程序。请注意,这些步骤假定你已经正确安装和配置了Kubernetes集群

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值