

无需手动输入命令,简单3步即可在K8S集群中启用GPU!
source link: http://dockone.io/article/2434417
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

无需手动输入命令,简单3步即可在K8S集群中启用GPU!
随着全球各大企业开始广泛采用Kubernetes,我们看到Kubernetes正在向新的阶段发展。一方面,Kubernetes被边缘的工作负载所采用并提供超越数据中心的价值。另一方面,Kubernetes正在驱动机器学习(ML)和高质量、高速的数据分析性能的发展。
我们现在所了解到的将Kubernetes应用于机器学习的案例主要源于Kubernetes 1.10中一个的功能,当时图形处理单元(GPUs)成为一个可调度的资源——现在这一功能处于beta版本。单独来看,这两个都是Kubernetes中令人兴奋的发展。更令人兴奋的是,可以使用Kubernetes在数据中心和边缘采用GPU。在数据中心,GPU是一种构建ML库的方式。那些训练过的库将被迁移到边缘Kubernetes集群作为机器学习的推理工具,在尽可能靠近数据收集的地方提供数据分析。
在早些时候,Kubernetes还是为分布式应用程序提供一个CPU和RAM资源的池。如果我们有CPU和RAM池,为什么不能有一个GPU池呢?这当然毫无问题,但不是所有的server都有GPU。所以,如何让我们的server在Kubernetes中可以装配GPU呢?
在本文中,我将阐述在Kubernetes集群中使用GPU的简单方法。在未来的文章中,我们还将GPU推向至边缘并向你展示如何完成这一步骤。为了真正地简化步骤,我将用Rancher UI来操作启用GPU的过程。Rancher UI只是Rancher RESTful APIs的一个客户端。你可以在GitOps、DevOps和其他自动化解决方案中使用其他API的客户端,比如Golang、Python和Terraform。不过,我们不会在此文中深入探讨这些。
本质上看,步骤十分简单:
- 为Kubernetes集群构建基础架构
- 安装Kubernetes
- 从Helm中安装gpu-operator
使用Rancher和可用的GPU资源启动和运行
Rancher是一个多集群管理解决方案并且是上述步骤的粘合剂。你可以在NVIDIA的博客中找到一个简化GPU管理的纯NVIDIA解决方案,以及一些关于gpu-operator与构建没有operator的GPU驱动堆栈有何区别的重要信息。(https://developer.nvidia.com/b ... etes/)
前期准备
以下是在Rancher中启动和运行GPU所需的材料清单(BOM):
- Rancher
- GPU Operator(https://nvidia.github.io/gpu-operator/)
- 基础架构——我们将在AWS上使用GPU节点
https://docs.rancher.cn/docs/r ... ndex/
流程步骤
使用GPUs安装Kubernetes集群
Rancher安装之后,我们首先将构建和配置一个Kubernetes集群(你可以使用任何带有NVIDIA GPU的集群)。
使用Global上下文,我们选择Add Cluster

并在“来自云服务商提供的主机”部分,选择Amazon EC2。

我们是通过节点驱动来实现的—— 一组预配置的基础设施模板,其中一些模板有GPU资源。

注意到这里有3个节点池:一个是为master准备的,一个是为标准的worker节点准备的,另一个是为带GPU的worker准备的。GPU的模板基于p3.2xlarge机器类型,使用Ubuntu 18.04亚马逊机器镜像或AMI(ami-0ac80df6eff0e70b5)。当然,这些选择是根据每个基础设施提供商和企业需求而变化的。另外,我们将 “Add Cluster”表单中的Kubernetes选项设置为默认值。
设置GPU Operator
现在,我们将使用GPU Operator库(https://nvidia.github.io/gpu-operator)在Rancher中设置一个catalog。(也有其他的解决方案可以暴露GPU,包括使用Linux for Tegra [L4T] Linux发行版或设备插件)在撰写本文时,GPU Operator已经通过NVIDIA Tesla Driver 440进行了测试和验证。
使用Rancher Global上下文菜单,我们选择要安装到的集群:

然后使用Tools菜单来查看catalog列表。

点击Add Catalog按钮并且给其命名,然后添加url:https://nvidia.github.io/gpu-operator
我们选择了Helm v3和集群范围。我们点击Create以添加Catalog到Rancher。当使用自动化时,我们可以将这一步作为集群构建的一部分。根据企业策略,我们可以添加这个Catalog到每个集群中,即使它还没有GPU节点或节点池。这一步为我们提供了访问GPU Operator chart的机会,我们接下来将安装它。

现在我们想要使用左上角的Rancher上下文菜单以进入集群的“System”项目,我们在这里添加了GPU Operator功能。

在System项目中,选择Apps:

然后点击右上方的Launch按钮。

我们可以搜索“nvidia”或者向下滚动到我们刚刚创建的catalog。

点击gpu-operator app,然后在页面底部点击Launch。

在这种情况下,所有的默认值都应该没问题。同样,我们可以通过Rancher APIs将这一步骤添加到自动化中。
利用GPU
既然GPU已经可以访问,我们现在可以部署一个GPU-capable 工作负载。同时,我们可以通过在Rancher中查看Cluster -> Nodes的页面验证安装是否成功。我们看到GPU Operator已经安装了Node Feature Discovery (NFD)并且给我们的节点贴上了GPU使用的标签。

之所以能够采用如此简单的方法就能够让Kubernetes与GPU一起运行,离不开这3个重要部分:
- NVIDIA的GPU Operator
- 来自Kubernetes同名SIG的Node Feature Discovery(NFD)。
欢迎您根据本教程动手尝试,也请继续保持关注,在之后的教程中我们会尝试将GPU引用至边缘。
Recommend
-
134
solidot新版网站常见问题,请点击这里查看。 提交文章 ...
-
8
Home Menu 【译】Rust 意味着无需手动关闭 Sock...
-
7
ADB命令系列之 adb shell input(Android模拟输入)简单总结 [本文结构] 最近开发一个新的接口,在调试的时候要手动输入蛮多参数,关键是参数又都太长,就专门看了下adb有木有模...
-
15
Redis 超详细的手动搭建Cluster集群步骤 Redis Cluster是Redis的自带的官方分布...
-
5
本文预计阅读时间 26 分钟 1,修改配置文件 将下载的 kubernetes-server-linux-amd64.tar.gz 解压后,再解压其中的 kubernetes-src.tar.gz 文件。 dashboard 对应的目录是:cluster/addons/dashboard。
-
8
我在工作中经常要将一些文件传输到另外一个服务器上,而且都是Linux的命令行环境,那么对于我来讲scp就是最直接有效的方法了,其他诸如FTP、SMB以及Winscp这些有界面的文件传输工具到反而有些多余了。 使用过scp的都知道需要指定远端服务器的帐号并手动...
-
13
写这篇文章原因 所有监控的agent底层最终都是查询的/proc和/sys里的信息推送(如果错了轻喷),因为在Kubernetes中收集宿主机信息方面也想用pod跑,会面临到问题。 常见的zabbix_agent默认读取fs的/proc和/sys,容器跑agent会导致读取的不是宿...
-
9
以前一直用 Kargo(基于 ansible) 来搭建 Kubernetes 集群,最近发现 ansible 部署的时候有些东西有点 bug,而且 Kargo 对 rkt 等也做了适配,感觉问题已经有点复杂化了;在 2.2 release 没出来这个时候,准备自己纯手动挡部署一下,Master HA 直接...
-
5
← 新的GnRH激素疗法有望提升唐氏患者的生活质量哪些动物最能适应气候变化? →
-
6
Ubuntu 是广泛应用于服务器、桌面和嵌入式设备的
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK