成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Kubernetes的Device Plugin設(shè)計(jì)解讀

bladefury / 676人閱讀

摘要:摘要的生態(tài)地位已經(jīng)確立,可擴(kuò)展性將是其發(fā)力的主戰(zhàn)場。該功能由于只是替代了做了些更名的工作,所以在已經(jīng)是穩(wěn)定的狀態(tài)了。異構(gòu)計(jì)算作為非常重要的新戰(zhàn)場,非常重視。而異構(gòu)計(jì)算需要強(qiáng)大的計(jì)算力和高性能網(wǎng)絡(luò),需要提供一種統(tǒng)一的方式與等高性能硬件集成。

摘要: Kubernetes的生態(tài)地位已經(jīng)確立,可擴(kuò)展性將是其發(fā)力的主戰(zhàn)場。異構(gòu)計(jì)算作為非常重要的新戰(zhàn)場,Kubernetes非常重視。而異構(gòu)計(jì)算需要強(qiáng)大的計(jì)算力和高性能網(wǎng)絡(luò),需要提供一種統(tǒng)一的方式與GPU、FPGA、NIC、InfiniBand等高性能硬件集成。

點(diǎn)此查看原文:http://click.aliyun.com/m/43607/

Kubernetes的Device Plugin設(shè)計(jì)解讀

最近在調(diào)研Kubernetes的GPU調(diào)度和運(yùn)行機(jī)制,發(fā)現(xiàn)傳統(tǒng)的alpha.kubernetes.io/nvidia-gpu即將在1.11版本中下線,和GPU相關(guān)的調(diào)度和部署的代碼將徹底從主干代碼中移除。

取而代之的是通過Extended Resource+Device Plugin兩個(gè)Kubernetes的內(nèi)置模塊,外加由設(shè)備提供商實(shí)現(xiàn)的相應(yīng)Device Plugin, 完成從設(shè)備的集群級別調(diào)度至工作節(jié)點(diǎn),到設(shè)備與容器的實(shí)際綁定。

首先思考的第一個(gè)問題是為什么進(jìn)入alpha.kubernetes.io/nvidia-gpu主干一年之久的GPU功能徹底移除?

1.OutOfTree是Kubernetes一個(gè)很好的理念,之前的Cloud Provider的重構(gòu)也是類似的工作。對于Kubernetes來說,不做瑞士軍刀,專注于自身核心和通用能力,而將像GPU,InfiniBand,FPGA和公共云能力的工作完全交給社區(qū)和領(lǐng)域?qū)<摇_@樣一方面可以降低軟件自身使用的復(fù)雜度,減小穩(wěn)定性風(fēng)險(xiǎn),另外OutOfTree分開迭代也能夠更靈活實(shí)現(xiàn)的功能升級。
2.而開放的軟件架構(gòu)設(shè)計(jì)和標(biāo)準(zhǔn)也調(diào)動了社區(qū)參與的積極性,而活躍的社區(qū)其實(shí)是Kubernetes打贏容器調(diào)度框架之戰(zhàn)的核心法寶。

先來簡要介紹一下kubernetes這兩個(gè)模塊:

Extended Resource: 一種自定義資源擴(kuò)展的方式,將資源的名稱和總數(shù)量上報(bào)給API server,而Scheduler則根據(jù)使用該資源pod的創(chuàng)建和刪除,做資源可用量的加減法,進(jìn)而在調(diào)度時(shí)刻判斷是否有滿足資源條件的節(jié)點(diǎn)。目前這里的Extended Resource的增加和減少單元必須是整數(shù),比如你可以分配1個(gè)GPU,但是不能分配0.5個(gè)GPU。該功能由于只是替代了Opaque integer resources,做了些更名的工作,所以在1.8已經(jīng)是穩(wěn)定的狀態(tài)了。但是當(dāng)integer這個(gè)關(guān)鍵詞被移除,也引發(fā)我們的想象,未來會不會有0.5存在的可能性?
Device Plugin:通過提供通用設(shè)備插件機(jī)制和標(biāo)準(zhǔn)的設(shè)備API接口。這樣設(shè)備廠商只需要實(shí)現(xiàn)相應(yīng)的API接口,無需修改Kubelet主干代碼,就可以實(shí)現(xiàn)支持GPU、FPGA、高性能 NIC、InfiniBand 等各種設(shè)備的擴(kuò)展。該能力在Kubernetes 1.8和1.9版本處于Alpha版本,在1.10會進(jìn)入Beta版本。
應(yīng)該說這個(gè)功能目前還比較新,需要通過feature gate打開, 即配置 --feature-gates=DevicePlugins=true

Device Plugin的設(shè)計(jì):

API設(shè)計(jì):
實(shí)際上Device plugins實(shí)際上是簡單的grpc server,需要實(shí)現(xiàn)以下兩個(gè)方法 ListAndWatch和Allocate,并監(jiān)聽在/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) {}
}

其中:

ListAndWatch: Kubelet會調(diào)用該API做設(shè)備發(fā)現(xiàn)和狀態(tài)更新(比如設(shè)備變得不健康)
Allocate: 當(dāng)Kubelet創(chuàng)建要使用該設(shè)備的容器時(shí), Kubelet會調(diào)用該API執(zhí)行設(shè)備相應(yīng)的操作并且通知Kubelet初始化容器所需的device,volume和環(huán)境變量的配置。

插件生命周期管理:
1.插件啟動時(shí),以grpc的形式通過/var/lib/kubelet/device-plugins/kubelet.sock向Kubelet注冊,同時(shí)提供插件的監(jiān)聽Unix Socket,API版本號和設(shè)備名稱(比如nvidia.com/gpu)。Kubelet將會把這些設(shè)備暴露到Node狀態(tài)中,以Extended Resource的要求發(fā)送到API server中,后續(xù)Scheduler會根據(jù)這些信息進(jìn)行調(diào)度。
2.插件啟動后,Kubelet會建立一個(gè)到插件的listAndWatch長連接,當(dāng)插件檢測到某個(gè)設(shè)備不健康的時(shí)候,就會主動通知Kubelet。此時(shí)如果這個(gè)設(shè)備處于空閑狀態(tài),Kubelet就會將其挪出可分配列表;如果該設(shè)備已經(jīng)被某個(gè)pod使用,Kubelet就會將該P(yáng)od殺掉
3.插件啟動后可以利用Kubelet的socket持續(xù)檢查Kubelet的狀態(tài),如果Kubelet重啟,插件也會相應(yīng)的重啟,并且重新向Kubelet注冊自己

部署方式

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

實(shí)現(xiàn)樣例

Nvidia 的官方GPU插件
NVIDIA 提供了一個(gè)基于 Device Plugins 接口的 GPU 設(shè)備插件NVIDIA/k8s-device-plugin, 從用戶角度變得更加簡單了。比起傳統(tǒng)的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也提供了一個(gè)GPU設(shè)備插件實(shí)現(xiàn),但是只支持運(yùn)行在Google Container Engine的平臺上,可以通過container-engine-accelerators了解

Solarflare NIC 插件

網(wǎng)卡造商Solarflare也實(shí)現(xiàn)了自己的設(shè)備插件sfc-device-plugin, 可以通過demo體驗(yàn)用戶感受。

總結(jié)

Kubernetes的生態(tài)地位已經(jīng)確立,可擴(kuò)展性將是其發(fā)力的主戰(zhàn)場。異構(gòu)計(jì)算作為非常重要的新戰(zhàn)場,Kubernetes非常重視。而異構(gòu)計(jì)算需要強(qiáng)大的計(jì)算力和高性能網(wǎng)絡(luò),需要提供一種統(tǒng)一的方式與GPU、FPGA、NIC、InfiniBand等高性能硬件集成。而Device Plugin是Kubernetes給出的答案,還是非常簡單優(yōu)雅的,雖然還在演進(jìn)之中,但是未來可期。阿里云容器服務(wù)隨后也會推出基于device plugin的Kubernetes GPU 1.9.3集群,敬請期待。

識別以下二維碼,閱讀更多干貨:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25215.html

相關(guān)文章

  • k8s擴(kuò)展資源設(shè)計(jì)device-plugin

    摘要:如果上的資源耗盡,這類將無法成功調(diào)度。將這個(gè)資源及其對應(yīng)的設(shè)備個(gè)數(shù)記錄到更新到。 extended-resources extended-resources在k8s1.9中是一個(gè)stable的特性??梢杂靡痪湓拋砀爬ㄟ@個(gè)特性: 通過向apiserver發(fā)送一個(gè)patch node 的請求,為這個(gè)node增加一個(gè)自定義的資源類型,用于以該資源的配額統(tǒng)計(jì)和相應(yīng)的QoS的配置。 patch ...

    shiweifu 評論0 收藏0
  • 閑談 Kubernetes 主要特性和經(jīng)驗(yàn)分享

    摘要:主要介紹的主要特性和一些經(jīng)驗(yàn)。先從整體上看一下的一些理念和基本架構(gòu),然后從網(wǎng)絡(luò)資源管理存儲服務(wù)發(fā)現(xiàn)負(fù)載均衡高可用安全監(jiān)控等方面向大家簡單介紹的這些主要特性。集群范圍內(nèi)的監(jiān)控主要由和如構(gòu)建。 主要介紹 Kubernetes 的主要特性和一些經(jīng)驗(yàn)。先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgra...

    Guakin_Huang 評論0 收藏0
  • 閑談 Kubernetes 主要特性和經(jīng)驗(yàn)分享

    摘要:主要介紹的主要特性和一些經(jīng)驗(yàn)。先從整體上看一下的一些理念和基本架構(gòu),然后從網(wǎng)絡(luò)資源管理存儲服務(wù)發(fā)現(xiàn)負(fù)載均衡高可用安全監(jiān)控等方面向大家簡單介紹的這些主要特性。集群范圍內(nèi)的監(jiān)控主要由和如構(gòu)建。 主要介紹 Kubernetes 的主要特性和一些經(jīng)驗(yàn)。先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgra...

    shevy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<