NVIDIA A100 PCIE 40GB k8s-device-plugin install in kubernetes

在这里插入图片描述

文章目录

    • 1. 目标
    • 2. 简介
      • 2.1 英伟达 A100 技术规格
      • 2.2 架构优势
      • 2.3 显卡跑分对比
      • 2.4 英伟达 A100 与 kubernetes
    • 3. 安装 NVIDIA A100 GPU 40G 硬件
    • 4. NVIDIA R450+ datacenter driver
    • 5. NVIDIA Container Toolkit
    • 6. 创建 runtimeclass
    • 5. MIG Strategies
    • 6. 配置仓库
    • 7. 下载镜像
    • 8. 打标签
    • 9. 设置master 可调度
    • 10. 定制 charts
    • 11. 部署
    • 12. 测试
    • 13. 问题

1. 目标

  • 一台服务器
  • 配置 NVIDIA A100 GPU 40G
  • 安装 NVIDIA R450+ datacenter driver
  • kubespray 部署单节点 kubernetes v1.27.7
  • 部署 NVIDIA k8s-device-plugin
  • 应用测试 GPU

2. 简介

2.1 英伟达 A100 技术规格

在这里插入图片描述

2.2 架构优势

在这里插入图片描述

2.3 显卡跑分对比

在这里插入图片描述

2.4 英伟达 A100 与 kubernetes

多实例GPU(GPU)功能允许NVIDIA A100 GPU针对CUDA应用安全地划分为多达七个独立的GPU实例,为多个用户提供独立的GPU资源,以实现最佳的GPU利用率。此功能对于未完全饱和GPU计算能力的工作负载特别有益,因此用户可能希望并行运行不同的工作负载以最大限度地提高利用率。
本文档概述了为Kubernetes启用SQL支持所需的软件。有关技术概念的更多详细信息,请参阅“NVIDIA用户指南”,设置"NVIDIA容器工具包“以使用”NVIDIA容器工具包“运行容器。

部署工作流需要以下预配置:

  • 您已安装NVIDIA A100所需的NVIDIA R450+数据中心(450.80.02+)驱动程序。
  • 您已安装NVIDIA容器工具包v2.5.0+
  • 您已经启动并运行了Kubernetes部署,并可以访问至少一个NVIDIA A100 GPU。

满足这些先决条件后,您可以继续在集群中部署具有可扩展性的NVIDIA k8s-device-plugin版本和(可选)gpu-feature-discovery组件,以便Kubernetes可以在可用的可扩展性设备上调度pod

所需软件组件的最低版本列举如下:

  • NVIDIA R450+ datacenter driver: 450.80.02+
  • NVIDIA Container Toolkit (nvidia-docker2): v2.5.0+
  • NVIDIA k8s-device-plugin: v0.14.3
  • NVIDIA gpu-feature-discovery: v0.2.0+

3. 安装 NVIDIA A100 GPU 40G 硬件

  • 视频英伟达 A100 测评:https://www.youtube.com/watch?v=zBAxiQi2nPc

在这里插入图片描述

内部构造分布

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4. NVIDIA R450+ datacenter driver

  • 下载 NVIDIA R450+ datacenter driver: 450.80.02+
  • 下载 NVIDIA-Linux-x86_64-535.129.03.run
  • -安装: sh NVIDIA-Linux-x86_64-535.129.03.run
    在这里插入图片描述

5. NVIDIA Container Toolkit

  • https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

包名称
如果离线下载需要这四个包

$ ls NVIDIAContainerToolkit/
libnvidia-container1-1.14.3-1.x86_64.rpm       nvidia-container-toolkit-1.14.3-1.x86_64.rpm
libnvidia-container-tools-1.14.3-1.x86_64.rpm  nvidia-container-toolkit-base-1.14.3-1.x86_64.rpm

在线下载安装

curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum-config-manager --enable nvidia-container-toolkit-experimental
sudo yum install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=containerd
cat /etc/nvidia-container-runtime/config.toml

6. 创建 runtimeclass

cat nvidia-RuntimeClass.yaml <<EOF
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:name: nvidia
handler: nvidia
EOF
kubectl apply -f nvidia-RuntimeClass.yaml

5. MIG Strategies

NVIDIA提供了两种在Kubernetes节点上暴露Android设备的策略。有关策略的更多详细信息,请参阅设计文档。

在Kubernetes中使用策略
本节将介绍为不同的SDK策略部署和运行k8s-device-plugin和gpu-feature-discovery组件所需的步骤。首选的部署方法是通过Helm。
有关替代部署方法,请参阅以下GitHub存储库中的安装说明:

6. 配置仓库

首先,添加nvidia-device-plugin和gpu-feature-discovery helm存储库:

helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
helm repo add nvgfd https://nvidia.github.io/gpu-feature-discovery
helm repo update
helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
helm repo update
helm search nvdp
helm search repo nvdp
helm pull nvgfd/gpu-feature-discovery --version 0.14.3 --untar --destination /root/NVIDIA/
helm pull nvdp/nvidia-device-plugin --version 0.14.3 --untar --destination /root/NVIDIA/helm repo add nvgfd https://nvidia.github.io/gpu-feature-discovery
helm repo update
helm search repo nvgfd
helm pull nvgfd/gpu-feature-discovery --version 0.8.2 --untar --destination /root/NVIDIA/

如果是离线环境需要下载

7. 下载镜像

docker pull nvidia/k8s-device-plugin:v0.14.3
docker pull registry.k8s.io/nfd/node-feature-discovery:v0.12.1
docker pull nvcr.io/nvidia/gpu-feature-discovery:v0.8.2
docker save -o nvidia-k8s-device-plugin-v0.14.3.tar nvidia/k8s-device-plugin:v0.14.3
docker save -o nfd-node-feature-discovery-v0.12.1.tar registry.k8s.io/nfd/node-feature-discovery:v0.12.1
docker save -o nvidia-gpu-feature-discovery-v0.8.2.tar nvcr.io/nvidia/gpu-feature-discovery:v0.8.2

镜像入库, 以 registry01.ghostwritten.com为例

docker load -i nvidia-k8s-device-plugin-v0.14.3.tar
docker load -i nfd-node-feature-discovery-v0.12.1.tar
docker load -i nvidia-gpu-feature-discovery-v0.8.2.tardocker tag nvidia/k8s-device-plugin:v0.14.3 registry01.ghostwritten.com/nvidia/k8s-device-plugin:v0.14.3
docker tag registry.k8s.io/nfd/node-feature-discovery:v0.12.1 registry01.ghostwritten.com/nvidia/node-feature-discovery:v0.12.1 
docker tag nvcr.io/nvidia/gpu-feature-discovery:v0.8.2 registry01.ghostwritten.com/nvidia/gpu-feature-discovery:v0.8.2 docker push registry01.ghostwritten.com/nvidia/k8s-device-plugin:v0.14.3
docker push registry01.ghostwritten.com/nvidia/node-feature-discovery:v0.12.1 
docker push registry01.ghostwritten.com/nvidia/gpu-feature-discovery:v0.8.2 

8. 打标签

kubectl label nodes kube-master01 feature.node.kubernetes.io/pci-10de.present=true
kubectl label nodes kube-master01 nvidia.com/gpu=true
kubectl label nodes kube-master01 feature.node.kubernetes.io/pci-10de.present=true
kubectl label nodes kube-master01 feature.node.kubernetes.io/cpu-model.vendor_id=NVIDIA
kubectl label nodes kube-master01 nvidia.com/gpu.present=true

9. 设置master 可调度

kubernetes 设置节点可调度

kubectl taint node node01 node-role.kubernetes.io/master-

10. 定制 charts

$ vim nvidia-device-plugin/values.yaml
.....
migStrategy: single
...
image:repository: registry01.ghostwritten.com/nvidia/k8s-device-pluginpullPolicy: IfNotPresenttag: "v0.14.3"
....
tolerations:- key: nvidia.com/gpuoperator: Exists...
nfd:nameOverride: node-feature-discoveryenableNodeFeatureApi: falsemaster:extraLabelNs:- nvidia.comserviceAccount:name: node-feature-discoveryworker:tolerations:- key: "nvidia.com/gpu"operator: Exists
gfd:enabled: enablenameOverride: gpu-feature-discovery$ vim nvidia-device-plugin/charts/gpu-feature-discovery/values.yaml
image:repository:registry01.ghostwritten.com/nvidia/gpu-feature-discoverypullPolicy: IfNotPresenttag: "v0.8.2 "

11. 部署

  • https://github.com/NVIDIA/k8s-device-plugin/tree/v0.14.3/deployments/helm/nvidia-device-plugin
helm install --version=0.14.3 nvdp -n nvidia-device-plugin  --set migStrategy=single --set runtimeClassName=nvidia --create-namespace

在这里插入图片描述

在这里插入图片描述

12. 测试

kubectl run -it --rm \--image=registry01.ghostwritten.com/nvidia/cuda:9.0-base \--restart=Never \--limits=nvidia.com/gpu=1 \mig-none-example -- nvidia-smi -L

输出:

GPU 0: A100-SXM4-40GB (UUID: GPU-15f0798d-c807-231d-6525-a7827081f0f1)

13. 问题

  • Getting nvidia-device-plugin container CrashLoopBackOff | version v0.14.0 | container runtime : containerd

    • 解决方法:https://github.com/NVIDIA/k8s-device-plugin/issues/406

创建 runtimeclass

cat nvidia-RuntimeClass.yaml <<EOF
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:name: nvidia
handler: nvidia
EOF
kubectl apply -f nvidia-RuntimeClass.yaml

参考:

  • MIG Support in Kubernetes
  • Installing the NVIDIA Container Toolkit
  • 深度了解 NVIDIA Ampere 架构
  • MIG-GPU简介与A100-MIG实践详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/218792.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java系列】详解多线程(三)—— 线程安全(上篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一…

人工智能在红斑狼疮应用主要以下4个方面

人工智能&#xff08;Artificial Intelligence, AI&#xff09;在医学领域的应用已取得了一定的进展。红斑狼疮&#xff08;Systemic Lupus Erythematosus, SLE&#xff09;是一种免疫系统性疾病&#xff0c;对该疾病进行诊断和治疗是一个复杂的过程。人工智能可以发挥作用&…

贝蒂详解<string.h>哦~(用法与实现)

目录 引言&#xff1a; &#xff08;一&#xff09;字符函数和字符串函数 1.简介 2.strlen()函数 2.1用法 2.2实例 2.3 实现strlen() &#xff08;1&#xff09;计数法 &#xff08;2&#xff09;递归法 &#xff08;3&#xff09; 指针-指针 2.4sizeof和strlen()的区别 3.s…

【Redis】Redis.conf详解

Redis.conf详解 启动的时候&#xff0c;就通过配置文件来启动&#xff01; 工作中&#xff0c;一些小小的配置&#xff0c;可以让你脱颖而出&#xff01; 单位 配置文件 unit单位 对大小写不敏感&#xff01;include包含其他配置文件 就是好比我们学习Spring、Improt&#x…

2023自动化测试框架大对比:哪个更胜一筹?

所谓工欲善其事&#xff0c;必先利其器&#xff0c;在进行自动化测试时&#xff0c;选择一个合适的框架是至关重要的。因为一个好的测试框架可以大大提高测试效率&#xff0c;减少我们很多工作量。在选择框架之前&#xff0c;我们通常需要对不同的框架进行对比&#xff0c;以便…

MC-30A (32.768 kHz用于汽车应用的晶体单元)

MC-30A 32.768 kHz用于汽车应用的晶体&#xff0c;车规晶振中的热销型号之一。该款石英晶体谐振器&#xff0c;可以在-40 to 85 C的温度内稳定工作&#xff0c;能满足起动振动的要求。同时满足AEC-Q200无源元件质量标准认证&#xff0c;满足汽车仪表系统的所有要求。 频率范围…

Mr. Cappuccino的第66杯咖啡——解决MacOS中终端下的中文乱码问题

解决MacOS中终端下的中文乱码问题 中文乱码问题解决方法 中文乱码问题 解决方法 查看Mac使用的是哪个shell echo $SHELL我这里使用的是zsh&#xff0c;将配置添加到.zshrc配置文件中 vi ~/.zshrc 输入i进入编辑模式 esc退出编辑模式 :wq# UTF-8 export LANGen_US.UTF-8加载配…

听GPT 讲Rust源代码--src/tools(14)

File: rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs这个文件是Rust语言分析器&#xff08;Rust Analyzer&#xff09;的一部分&#xff0c;用于处理和管理条件编译指令&#xff08;Cond…

阿里云对象存储OSS外网流出流量异常增多导致费用上升的解决方法

本文介绍在使用阿里云的对象存储 OSS服务过程中&#xff0c;外网流量消耗异常增多并导致异常的费用支出这一情况的问题发现、问题定位与几种不同的问题解决方法。 细细数来&#xff0c;写博客已经有近3的历史了&#xff0c;这成为了一项已经陪伴我大半人生的工作&#xff1b;也…

持续集成交付CICD:Jenkins流水线操作Harbor仓库

目录 一、实验 1.Jenkins主节点安装Docker 2.Jenkins主节点安装Harbor 3.Jenkins从节点安装Docker 4.Jenkins流水线操作Harbor仓库 二、问题 1.Jenkins主节点登录Harbor仓库报错 2.Jenkins流水线里从节点操作docker报错 3.Jenkins流水线里从节点远程登录Harbor仓库报错…

智能优化算法应用:基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.海洋捕食者算法4.实验参数设定5.算法…

如何在 Windows 10/11 上恢复已删除的 Word 文档

意外删除重要的 Word 文档可能会令人心碎。当文件恰好非常重要时尤其如此。关键数据的丢失可能会导致沮丧和恐慌&#xff0c;因为数小时的辛勤工作和有价值的信息似乎消失得无影无踪。然而&#xff0c;在您屈服于绝望之前&#xff0c;有个好消息。 有多种技术和工具可帮助您恢…

【linux】Debian不能运行sudo的解决

一、问题&#xff1a; sudo: 没有找到有效的 sudoers 资源&#xff0c;退出 sudo: 初始化审计插件 sudoers_audit 出错 二、可用的方法&#xff1a; 出现 "sudo: 没有找到有效的 sudoers 资源&#xff0c;退出" 和 "sudo: 初始化审计插件 sudoers_audit 出错&q…

全国职业院校技能大赛“大数据应用开发”赛项说明

1、赛项介绍 &#xff08;1&#xff09;赛项名称 全 国 职 业 院 校 技 能 大 赛 “大数据应用开发” 赛 项 https://www.vcsc.org.cn/ 大赛组织机构介绍 全国职业院校技能大赛(以下简称大赛)是教育部发起并牵头&#xff…

为uniDBGrid设置文字操作栏

为uniDBGrid设置文字操作栏&#xff0c;如下图的效果&#xff0c;用户点击审核&#xff0c;执行审核代码&#xff0c;点退回&#xff0c;执行退回代码&#xff1a; 对于Web应用界面&#xff0c;这是最常见的方式&#xff0c;那对于我等Delphi开发者来说&#xff0c;基于uniGUI该…

如何拍摄超级大像素图片,超级大像素有哪些应用

引言&#xff1a; 在数字摄影领域&#xff0c;超级大像素照片是指通过高像素的相机或拼接多张照片合成的照片。这样的照片具有更高的分辨率&#xff0c;细节更加清晰&#xff0c;绘画质感更强。那么如何拍摄超级大像素照片&#xff0c;超级大像素可以用在哪些领域呢。 一&…

云原生之深入解析亿级流量架构之服务限流思路与方法

一、限流思路 ① 熔断 系统在设计之初就把熔断措施考虑进去&#xff0c;当系统出现问题时&#xff0c;如果短时间内无法修复&#xff0c;系统要自动做出判断&#xff0c;开启熔断开关&#xff0c;拒绝流量访问&#xff0c;避免大流量对后端的过载请求。系统也应该能够动态监测…

实操Nginx(七层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录 Tomcat多实例部署&#xff08;192.168.17.27&#xff09; 1.安装jdk&#xff0c;设置jdk的环境变量 2.安装tomcat在一台已经部署了tomcat的机器上复制tomcat的配置文件取名tomcat1 ​编辑 编辑配置文件更改端口号&#xff0c;将端口号改为8081 启动 tomcat&#xff…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前后端应用

目录 一、实验 1.部署Ansible自动化运维工具 2.K8S 节点安装nginx 3.Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前后端应用 二、问题 1.ansible安装报错 2.ansible远程ping失败 3. Jenkins流水线通过ansible命令直接ping多台机器的网络状态报错 一、实验 …

【PostgreSQL】从零开始:(六)PostgreSQL-数据库目录文件结构及作用说明

数据库文件目录结构 ├── bin #系统工具目录 │ ├── clusterdb │ ├── createdb │ ├── createuser │ ├── dropdb │ ├── dropuser │ ├…