Kubernetes的Device Plugin设计是怎样的

发布时间:2022-01-12 09:56:01 作者:iii
来源:亿速云 阅读:218

本文小编为大家详细介绍“Kubernetes的Device Plugin设计是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Kubernetes的Device Plugin设计是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Kubernetes的Device Plugin设计解读

最近在调研Kubernetes的GPU调度和运行机制,发现传统的alpha.kubernetes.io/nvidia-gpu即将在1.11版本中下线,和GPU相关的调度和部署的代码将彻底从主干代码中移除。

取而代之的是通过Extended Resource+Device Plugin两个Kubernetes的内置模块,外加由设备提供商实现的相应Device Plugin, 完成从设备的集群级别调度至工作节点,到设备与容器的实际绑定。

首先思考的第一个问题是为什么进入alpha.kubernetes.io/nvidia-gpu主干一年之久的GPU功能彻底移除?

  1. OutOfTree是Kubernetes一个很好的理念,之前的Cloud Provider的重构也是类似的工作。对于Kubernetes来说,不做瑞士军刀,专注于自身核心和通用能力,而将像GPU,InfiniBand,FPGA和公共云能力的工作完全交给社区和领域专家。这样一方面可以降低软件自身使用的复杂度,减小稳定性风险,另外OutOfTree分开迭代也能够更灵活实现的功能升级。

  2. 而开放的软件架构设计和标准也调动了社区参与的积极性,而活跃的社区其实是Kubernetes打赢容器调度框架之战的核心法宝。

先来简要介绍一下kubernetes这两个模块:

应该说这个功能目前还比较新,需要通过feature gate打开, 即配置 --feature-gates=DevicePlugins=true

Device Plugin的设计:

API设计:

实际上Device plugins实际上是简单的grpc server,需要实现以下两个方法 ListAndWatchAllocate,并监听在/var/lib/kubelet/device-plugins/目录下的Unix Socket,比如/var/lib/kubelet/device-plugins/nvidia.sock

service DevicePlugin {
    // returns a stream of []Device
    rpc ListAndWatch(Empty) returns (stream ListAndWatchResponse) {}
    rpc Allocate(AllocateRequest) returns (AllocateResponse) {}
}

其中:

插件生命周期管理:

Kubernetes的Device Plugin设计是怎样的

部署方式

一般可以支持daemonset和非容器化的部署,目前官方推荐使用deamonset部署。

实现样例

Nvidia 的官方GPU插件

NVIDIA 提供了一个基于 Device Plugins 接口的 GPU 设备插件NVIDIA/k8s-device-plugin, 从用户角度变得更加简单了。比起传统的alpha.kubernetes.io/nvidia-gpu, 不再需要使用volumes指定CUDA需要使用的库。

apiVersion: apps/v1
kind: Deployment

metadata:
  name: tf-notebook
  labels:
    app: tf-notebook

spec:

  template: # define the pods specifications
    metadata:
      labels:
        app: tf-notebook

    spec:
      containers:
      - name: tf-notebook
        image: tensorflow/tensorflow:1.4.1-gpu-py3
        resources:
          limits:
            nvidia.com/gpu: 1

Google GCP GPU插件

GCP也提供了一个GPU设备插件实现,但是只支持运行在Google Container Engine的平台上,可以通过container-engine-accelerators了解

Solarflare NIC 插件

网卡造商Solarflare也实现了自己的设备插件sfc-device-plugin, 可以通过demo体验用户感受。

读到这里,这篇“Kubernetes的Device Plugin设计是怎样的”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. # IT明星不是梦 # 图解kubernetes资源扩展机制
  2. Kubernetes中的GPU管理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes device plugin

上一篇:Kubernetes可以满足微服务的哪些需求

下一篇:MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》