91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>匯編編程>

Mesos容器引擎的架構(gòu)設(shè)計(jì)

大?。?/span>0.3 MB 人氣: 2017-09-27 需要積分:1

  引言:提到容器,大家第一時(shí)間都會想到Docker,畢竟Docker是目前最為流行的容器開源項(xiàng)目,它實(shí)現(xiàn)了一個(gè)容器引擎(Docker engine),并且為容器的創(chuàng)建和管理、容器鏡像的生成、分發(fā)和下載提供一套非常便利的工具鏈,而它的容器鏡像格式幾乎就是業(yè)界的事實(shí)標(biāo)準(zhǔn)。但其實(shí)除了Docker之外,在容器的開源生態(tài)圈中還有其它一些項(xiàng)目也在做自己的容器引擎,這樣的項(xiàng)目一般也被稱作為容器運(yùn)行時(shí)(container runtime),比如:CoreOS的rkt和Mesos的容器引擎(Mesos containerizer)。在本文中,我將對Mesos容器引擎進(jìn)行一個(gè)全面的介紹,解釋在Docker如此流行的情況下Mesos為什么還要堅(jiān)持做自己的容器引擎,介紹Mesos容器引擎的總體架構(gòu)和各核心組件,以及它對容器各相關(guān)標(biāo)準(zhǔn)規(guī)范的采納和支持。

  容器和容器引擎的定義

  首先我們來了解一下什么是容器。我個(gè)人對容器的定義是:一個(gè)或一組使用了cgroups做資源限定、使用了namespace做資源隔離、且使用了的鏡像文件做根文件系統(tǒng)的進(jìn)程。如下圖1所示:

  Mesos容器引擎的架構(gòu)設(shè)計(jì)

  圖1

  由此可見,實(shí)現(xiàn)容器的三大核心技術(shù)分別是:

  Cgroups(Control Cgroups,控制群組):Linux中的Cgroups包含多個(gè)不同的子系統(tǒng),如:CPU、memory、device等。通過這些子系統(tǒng)就可以對容器能夠使用的各種資源進(jìn)行限定,比如:通過CPU子系統(tǒng)可以限定容器使用CPU資源的相對權(quán)重和單位時(shí)間內(nèi)能夠使用的的CPU時(shí)間。

  Namespace(命名空間):Linux同樣支持多個(gè)namespace,如:mount、network、pid等。通過這些namespace可以對容器進(jìn)行不同維度的資源隔離,比如:通過mount namespace可以讓容器具有自己獨(dú)立的掛載空間,在主機(jī)或別的容器中發(fā)生的掛載事件對該容器就不可見,反之亦然。通過network namespace可以讓容器具有自己獨(dú)立的網(wǎng)絡(luò)協(xié)議棧,而不必和其所在主機(jī)共用同一個(gè)網(wǎng)絡(luò)協(xié)議棧。

  Layered filesystem(分層文件系統(tǒng)):Linux中的layered filesystem有多種不同的實(shí)現(xiàn),如:AUFS、overlayfs等。通過這些layered filesystem配合mount namespace就可以快速部署出容器自己獨(dú)立的根文件系統(tǒng)。而且,基于同一個(gè)鏡像文件創(chuàng)建出來的多個(gè)容器可以共享該鏡像文件中相同的只讀分層,以達(dá)到節(jié)省主機(jī)磁盤空間的效果。

  上面這三種技術(shù)都是在Linux系統(tǒng)中存在已久且相對成熟的技術(shù),但讓終端用戶直接使用它們來創(chuàng)建和管理容器顯然并不方便。所以,容器引擎就應(yīng)運(yùn)而生了,它所做的主要工作就是將這三種技術(shù)在其內(nèi)部有機(jī)地結(jié)合和利用起來以實(shí)現(xiàn)創(chuàng)建容器和管理容器的生命周期,并對外提供友好的接口讓用戶能夠方便的創(chuàng)建和管理容器。Cgroups、namespace和layered filesystem的詳細(xì)介紹我就不再本文中贅述了,感興趣的讀者可以查閱Linux中這三種技術(shù)的相關(guān)文檔。

  需要指出的是,容器引擎對這三種技術(shù)的使用往往是有選擇且可定制的,比如:用戶可以通過容器引擎創(chuàng)建一個(gè)使用cgroups memory子系統(tǒng)但不使用CPU子系統(tǒng)的容器,這樣的容器對內(nèi)存資源的使用就會受到相應(yīng)的限定,但對CPU資源的使用則不受任何限定。用戶也可以創(chuàng)建一個(gè)使用mount namespace但不使用network namespace的容器,這樣的容器就會有自己獨(dú)立的掛載空間,但和主機(jī)共用一個(gè)網(wǎng)絡(luò)協(xié)議棧。Mesos容器引擎在這方面的可定制化進(jìn)行得非常徹底,除了上面所說的對cgroups子系統(tǒng)和namespace的定制之外,Mesos容器引擎還能夠支持無鏡像文件創(chuàng)建容器,這是其它容器引擎所不具備的。

  Mesos容器引擎產(chǎn)生的背景

  在Docker如此流行的情況下,Mesos為什么還要堅(jiān)持做自己的容器引擎呢?其實(shí)Mesos在很早期的版本就和Docker進(jìn)行了集成,用戶可以通過Mesos創(chuàng)建一個(gè)Docker容器,在內(nèi)部實(shí)現(xiàn)上,Mesos agent會調(diào)用Docker的命令行和Docker engine通信,以讓其創(chuàng)建Docker容器。這也就是意味著Mesos對容器的管理嚴(yán)重依賴于Docker engine,而這種做法的問題是:

  穩(wěn)定性不足:Mesos常常會被用來管理幾千甚至上萬節(jié)點(diǎn)的生產(chǎn)環(huán)境,而在如此大規(guī)模的生產(chǎn)環(huán)境中,穩(wěn)定性是極其重要的。而在這樣的環(huán)境中,通過實(shí)測我們發(fā)現(xiàn)Docker engine的穩(wěn)定性是有所不足的,有時(shí)會出現(xiàn)停止響應(yīng)甚至一些莫名其妙的bug,而這樣的問題反映到Docker社區(qū)中后有時(shí)又無法及時(shí)得到解決。這就促使了Mesos的開發(fā)者開始設(shè)計(jì)和實(shí)現(xiàn)自己的容器引擎。

  難于擴(kuò)展:Mesos的用戶常常會提出一些和容器相關(guān)的新需求(比如:讓容器能夠使用GPU資源,通過CNI配置容器的網(wǎng)絡(luò),等等),而這些需求都受限于Docker engine的實(shí)現(xiàn),如果Docker社區(qū)拒絕采納這些需求,或有完全不同的實(shí)現(xiàn)方式,那Mesos作為Docker engine之上的調(diào)用方也無計(jì)可施。

  眾所周知,Mesos的定位是數(shù)據(jù)中心操作系統(tǒng),它是一個(gè)非常好的通用資源管理和資源調(diào)度系統(tǒng),一開始就是一個(gè)“大腦級“的存在,但如果只有“大腦”沒有“四肢”(對容器的支持就是“四肢”的一種),或“四肢“掌握在別人手中,那Mesos本身和其生態(tài)圈的可持續(xù)發(fā)展顯然是受限的。所以,發(fā)展自己的“四肢”是Mesos逐步發(fā)展壯大的必然選擇。

  基于上述這些原因,Mesos社區(qū)決定要做自己的容器引擎,這個(gè)容器引擎完全不依賴于Docker engine(即:和Docker engine沒有任何交互),但同時(shí)它又完美兼容Docker鏡像文件。這也就意味著,用戶可以通過Mesos在一臺沒有安裝運(yùn)行Docker engine的主機(jī)上,基于任意Docker鏡像創(chuàng)建出容器。

 

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

Mesos容器引擎的架構(gòu)設(shè)計(jì)下載

相關(guān)電子資料下載

      發(fā)表評論

      用戶評論
      評價(jià):好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?