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

标签: 命令 k8s 集群 | 发表时间:2021-01-07 07:00 | 作者:RancherLabs
出处:https://www.infoq.cn

随着全球各大企业开始广泛采用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):

RancherGPU Operator(https://nvidia.github.io/gpu-operator/)基础架构——我们将在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个重要部分:

NVIDIA的GPU Operator来自Kubernetes同名SIG的Node Feature Discovery(NFD)。Rancher的集群部署和catalog app集成

文章转载自: RancherLabs(ID:RancherLabs)

原文链接: 无需手动输入命令,简单3步即可在K8S集群中启用GPU"

相关 [命令 k8s 集群] 推荐:

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

- - InfoQ推荐
随着全球各大企业开始广泛采用Kubernetes,我们看到Kubernetes正在向新的阶段发展. 一方面,Kubernetes被边缘的工作负载所采用并提供超越数据中心的价值. 另一方面,Kubernetes正在驱动机器学习(ML)和高质量、高速的数据分析性能的发展. 我们现在所了解到的将Kubernetes应用于机器学习的案例主要源于Kubernetes 1.10中一个的功能,当时图形处理单元(GPUs)成为一个可调度的资源——现在这一功能处于beta版本.

k8s docker集群搭建 - CSDN博客

- -
一、Kubernetes系列之介绍篇.     - 一次构建,到处运行. 2.什么是kubernetes.   首先,他是一个全新的基于容器技术的分布式架构领先方案. Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg). 在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性.

构建生产就绪的K8S集群的16点清单

- - SegmentFault 最新的文章
Kubernetes是用于构建高度可扩展系统的强大工具. 结果,许多公司已经开始或正在计划使用它来协调生产服务. 不幸的是,像大多数强大的技术一样,Kubernetes也很复杂. 我们整理了以下清单,以帮助你生产环境最佳实践Kubernetes. Kubernetes提供了一种编排容器化服务的方法,因此,如果您没有按顺序实践你的容器,那么集群一开始就不会处于良好状态.

Kubernetes(K8S)集群部署搭建图文教程(最全)

- -
Kubernetes 集群安装. Harbor采取私有的仓库去镜像使用. 第一步:Router软路由构建. 第二步:centos7安装 5台(自行安装). 复制这段内容后打开百度网盘手机App,操作更方便哦. 1、安装k8s的节点必须是大于1核心的CPU 2、安装节点的网络信息. 3、koolshare 软路由的默认面是koolshare.

基于 Ubuntu 20.04 部署 1.23版K8S 集群

- - 明哥教程
从今天开始,我将开始连载《图解 K8S》入门系列文章. 更多系列文章,可以微信搜索公众号: 写点代码的明哥,回复 k8s 获取全系列教程. 本篇是做为系列的第一篇文章,先来带大家一起搭建一个可用的 K8S 环境. K8S 环境的搭建,是很多想学习 K8S 的人止于在入门之外的第一道门槛,不少人在这一道关上就被直接被劝退了.

记 K8s 集群中 Flannel 遇到的两个问题

- - IT瘾-dev
自建的 K8s 集群的坑不少, 尤其是到了 Node 数量越来越多之后, 问题也逐渐显露了出来, 博客主要介绍我们使用 flannel之后遇到的两个问题以及解决方案, 问题其实不严重, 只是涉及到了底层的结构, 改动时候要小心.. 问题 1 flannel 的 OOM 问题. 下面这张图是官方的配置, 可以看到, 默认的资源设置仅给定了 50M 内存.

如何收集 Yarn/K8s 集群中的 Flink 任务日志?

- - zhisheng的博客
从一个小需求(任务异常或者失败时排查问题不便)出发,开始调研业界常见的解决方案进行解决我们的需求,接着有对应的代码实现和效果展示. 熟悉 Flink On Yarn 的应该知道 Flink 任务运行结束/失败后,只能去 Yarn UI 看到任务的 Jobmanager 日志,对于 TaskManager 日志这些是看不到的,这对于有时候想排查下任务失败的原因日志会比较困难(不过大多数任务挂掉的原因日志都会在 Jobmanager 存在).

kafka集群操作命令

- - 开源软件 - ITeye博客
默认Kafka会使用ZooKeeper默认的/路径,这样有关Kafka的ZooKeeper配置就会散落在根路径下面,如果 你有其他的应用也在使用ZooKeeper集群,查看ZooKeeper中数据可能会不直观,所以强烈建议指定一个chroot路径,直接在 zookeeper.connect配置项中指定.

从零开始在ubuntu上安装和使用k8s集群及报错解决

- - 行业应用 - ITeye博客
这几天在学习K8S的安装和使用,在此记录一下. 两小时Kubernetes(K8S)从懵圈到熟练——大型分布式集群环境捷径部署搭建_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili. 镜像+讲义+安装包,链接:https://pan.baidu.com/s/1qO697oBuR7TwQ2J8boI3EA 提取码:4mvs.

[译] Cilium 未来数据平面:支撑 100Gbit/s k8s 集群(KubeCon, 2022)

- - ArthurChiao's Blog
本文翻译自 KubeCon+CloudNativeCon North America 2022 的一篇分享: 100 Gbit/s Clusters with Cilium: Building Tomorrow’s Networking Data Plane. 作者 Daniel Borkmann, Nikolay Aleksandrov, Nico Vibert 都来自 Isovalent(Cilium 母公司).