无需手动输入命令,简单3步即可在K8s集群中启用GPU!

谁说我不能喝 提交于 2021-01-06 08:35:27

10人将获赠CNCF士多$100礼券!

来参与2020年CNCF中国云原生调查

问卷链接(https://www.wjx.cn/jq/97146486.aspx




活动预告

Rancher 2021年的第一场线下沙龙已经准备就绪啦,1月16日我们相约上海!


如何打造日志、监控和应用追踪一站式解决方案以获得多维度的可观测性?微服务架构下所面临的DevOps挑战有哪些?又该如何解决?如何利用K3s提升开发效率?如何在符合安全的前提下,保持敏捷的应用发布和运行?本期沙龙通通告诉你!


扫描下方二维码或点击【阅读原文】即可免费报名


随着全球各大企业开始广泛采用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/blog/nvidia-gpu-operator-simplifying-gpu-management-in-kubernetes/


前期准备


以下是在Rancher中启动和运行GPU所需的材料清单(BOM):


  1. Rancher

  2. GPU Operator(https://nvidia.github.io/gpu-operator/

  3. 基础架构——我们将在AWS上使用GPU节点


在官方文档中,我们有专门的章节阐述如何高可用安装Rancher,所以我们假设你已经将Rancher安装完毕:

https://docs.rancher.cn/docs/rancher2/installation/k8s-install/_index/


流程步骤


使用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个重要部分:


  1. NVIDIA的GPU Operator

  2. 来自Kubernetes同名SIG的Node Feature Discovery(NFD)。

  3. Rancher的集群部署和catalog app集成


欢迎您根据本教程动手尝试,也请继续保持关注,在之后的教程中我们会尝试将GPU引用至边缘。


推荐阅读

Rancher开源Harvester:基于K8S的超融合基础架构软件

Argo CD使用指南:如何构建一套完整的GitOps?

K8S CronJob简单入门,和手动重复操作Say Goodbye!

About Rancher Labs

Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为“2020年多云容器开发平台领导厂商”以及“2018年全球容器管理平台领导厂商”,被Gartner评为“2017年全球最酷的云基础设施供应商”。


目前Rancher在全球拥有超过三亿的核心镜像下载量,并拥有包括中国联通、中国平安、中国人寿、上汽集团、三星、施耐德电气、西门子、育碧游戏、LINE、WWK保险集团、澳电讯公司、德国铁路、厦门航空、新东方等全球著名企业在内的共40000家企业客户。

点击阅读原文,预约2021年第一场线下技术沙龙!


文章转载自RancherLabs点击这里阅读原文了解更多


扫描二维码联系我们!




CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

本文分享自微信公众号 - CNCF(lf_cncf)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!