kubernetes 對比 mesos + marathon

這篇博客中我們將比較Kubernetes與Mesos + Marathon容器編排解決方案。我們將深入的討論Kubernetes 與Mesos + marathon,分析他們的特點,及他們的優(yōu)缺點。

Kubernetes概述

根據(jù)Kubernetes網(wǎng)站的說法,“Kubernetes是一個自動化,容器化應用程序部署擴展和管理的開放源代碼系統(tǒng)。”Kubernetes由Google根據(jù)他們在生產(chǎn)中運行容器的經(jīng)驗使用稱為Borg的內(nèi)部集群管理系統(tǒng)(有時簡稱Omega)。 Kubernetes的體系結(jié)構(gòu)依賴于這種經(jīng)驗,如下所示:


從上圖可以看出,有一些與Kubernetes集群相關(guān)的組件。主節(jié)點將容器工作負載放置在工作節(jié)點。其他組件包括:

etcd:該組件存儲配置數(shù)據(jù),可以通過簡單的HTTP或JSON API由Kubernetes master API服務器訪問(可以看作集群數(shù)據(jù)庫)。

APIserver:此組件是Kubernetes主節(jié)點的管理中心。它有助于各個組件之間的通信,從而保持集群的健康。

Controller Manager:該組件確保通過向上和向下擴展工作負載來使群集的期望狀態(tài)與當前狀態(tài)相匹配。

Scheduler:該組件將工作負載放置在適當?shù)墓?jié)點上。

Kubelet:該組件從API服務器接收pod規(guī)范并管理在主機中運行的pod。

以下列表提供了與Kubernetes相關(guān)的一些其他常用術(shù)語:

pod:Kubernetes編排調(diào)度容器以pod 為單位。同一個pod中的容器運行在同一個節(jié)點上,并共享資源,如文件系統(tǒng),內(nèi)核命名空間和IP地址。

Deployments:可以創(chuàng)建管理一組pod。部署可以與服務層一起用于水平擴展或確保可用性。

Services:可以直接訪問。 Kubernetes為集群提供一個DNS服務器,用于監(jiān)視新服務,并允許他們通過名稱進行尋址。服務是您的容器工作負載的“外在表現(xiàn)”。

Labels:關(guān)聯(lián)到實際各種對象的鍵值對。它們可以用來搜索和更新多個對象作為一個單一集合。(例如:可以用標簽區(qū)分,實驗環(huán)境,測試環(huán)境)

Mesos + Marathon概述

Mesos是一個分布式內(nèi)核,旨在為您的數(shù)據(jù)中心提供動態(tài)的資源分配。想象一下,你管理一個中型企業(yè)的IT部門。您需要在一天中的100個節(jié)點上運行工作負載,但是需要在25個小時后運行。 Mesos可以重新分配工作負載,以便其他75個節(jié)點在不使用時可以關(guān)閉電源。 Mesos也可以提供資源共享。如果您的某個節(jié)點發(fā)生故障,則可以將工作負載分配到其他節(jié)點中。

Mesos帶有許多使用其資源共享功能的框架和應用棧。每個框架由一個調(diào)度器和一個執(zhí)行器組成。 Marathon是一個框架(或元框架),可以啟動應用程序和其他框架。 Marathon還可以作為容器編排平臺,為容器工作負載提供擴展和自我修復。下圖顯示了Mesos + Marathon的架構(gòu)。


Mesos和Marathon中有許多不同的組件。以下列表提供了一些常用術(shù)語:

Mesos Master:master這種類型的節(jié)點可以給多種框架共享資源,例如用于容器編排的Marathon,用于大規(guī)模數(shù)據(jù)處理的Spark以及用于NoSQL數(shù)據(jù)庫的Cassandra。

Mesos Slave:Slave這種類型的節(jié)點執(zhí)行實際工作任務,并且向master匯報可用資源。

Framework:Framework向Master注冊,master允許Framework的任務在slave節(jié)點執(zhí)行。

Zookeeper:這個組件提供了一個高度可用的數(shù)據(jù)庫,這個數(shù)據(jù)庫可以讓群集保持現(xiàn)在的狀態(tài),并且穩(wěn)定。

Marathon Scheduler:這個組件接收來自Mesos master的報告。 Mesos master 提供當前集群可用的內(nèi)存,CPU

Docker Executor:這個組件接收來自Marathon調(diào)度器的任務,并啟動slave節(jié)點上運行容器。

Mesosphere DCOS

Mesosphere Enterprise DC / OS利用Mesos分布式系統(tǒng)內(nèi)核,在容器和大數(shù)據(jù)管理基礎(chǔ)上構(gòu)建,提供安裝,用戶界面,管理和監(jiān)視工具等功能。下圖顯示了DCOS的高級體系結(jié)構(gòu)。


kubernetes 對比 mesos + marathon

1. 應用定義

k8s: 可以使用Pod,部署和服務的組合來部署應用程序。一個pod是一組位于同一節(jié)點的容器,是部署的原子單位。部署可以在多個節(jié)點上具有副本。服務是容器工作負載的“外部表現(xiàn)”,并與DNS集成配合訪問。

marathon:從用戶的角度來看,應用程序?qū)⒆鳛镸arathon在節(jié)點上調(diào)度的任務運行。 對于Mesos,應用程序是一個框架,可以是Marathon,Cassandra,Spark等等。 Marathon將容器調(diào)度為在從節(jié)點上執(zhí)行的任務。marathon 1.4引入了pod 的概念( 如同 Kubernetes pod),但這不是marathon核心的一部分。 節(jié)點可以根據(jù)機架,連接的存儲類型等進行標記。啟動Docker容器時可以使用這些約束。

2.應用的可擴展性

k8s:每個應用程序?qū)佣急欢x為一個pod,并且可以在通過聲明性指定的部署進行管理時進行縮放,例如,在YAML中。 縮放可以是手動或自動的。

marathon:可以使用Mesos CLI或UI。 可以使用JSON定義來啟動Docker容器,這些定義指定了存儲庫,資源,實例數(shù)量和要執(zhí)行的命令。 可以通過使用Marathon UI進行擴展,Marathon調(diào)度程序?qū)⒏鶕?jù)指定的標準將這些容器分布在從節(jié)點上。 支持自動縮放。 可以使用應用程序組來部署多層應用程序。

3.高可用

k8s:pod可以部署在不同節(jié)點上支持高可用。多個master節(jié)點,node 節(jié)點可以以負載均衡的方式對應客戶端的訪問。etcd 可以以集群方式部署

marathon: 容器可以不受限制的部署在任何節(jié)點上。使用Zookeeper支持Mesos和Marathon的高可用性。 Zookeeper提供Mesos和Marathon領(lǐng)導者的選舉并維護集群狀態(tài)。

4.負載均衡

k8s: Pod是通過服務暴露的,可以在集群內(nèi)用作負載平衡器。

marathon :主機端口可以映射到多個容器端口,作為其他應用程序或最終用戶的前端。

5.應用程序自動伸縮

k8s:使用簡單的pod目標進行自動縮放是使用部署以聲明方式定義的。 還支持使用資源度量的自動縮放。 資源指標范圍從CPU和內(nèi)存利用率到請求或每秒數(shù)據(jù)包甚至自定義指標。

marathon:馬拉松持續(xù)監(jiān)視正在運行的Docker容器實例的數(shù)量。 如果其中一個容器發(fā)生故障,Marathon會將其重新安排在其他從屬節(jié)點上。 只有通過社區(qū)支持的組件才能使用資源指標進行自動擴展。

6.應用程序滾動升級,回滾

k8s : 在deployment中有滾動升級和回滾的策略。可以設(shè)置pod最大數(shù)量。

marathon:?部署支持應用程序的滾動升級。失敗的升級可以使用回滾更改的更新部署進行修復。

7.健康檢查

k8s:健康檢查有兩種:活躍(即應用程序響應)和準備(應用程序響應,但正在忙著準備,還沒有能夠服務)。

marathon:運行狀況檢查可以指定為針對應用程序的任務運行。健康檢查請求可用于許多協(xié)議,包括HTTP,TCP和其他協(xié)議。

8.存儲

k8s:兩個存儲API:第一個提供個人存儲后端的抽象(例如NFS,AWS EBS,Ceph,F(xiàn)locker)。 第二個提供存儲資源請求的抽象,這可以用不同的存儲后端來實現(xiàn)。 修改集群節(jié)點上Docker守護進程使用的存儲資源需要暫時從集群中刪除該節(jié)點。 Kubernetes提供了幾種類型的持續(xù)卷,支持塊或文件。 例子包括iSCSI,NFS,F(xiàn)C,亞馬遜網(wǎng)絡服務,Google云端平臺和微軟Azure。 emptyDir卷是非持久性的,可以用來讀取和寫入容器的文件。

mesos/marathon:本地持久性卷(測試版)支持有狀態(tài)的應用程序,如MySQL。 需要時,可以使用相同的卷在同一節(jié)點上重新啟動任務。 外部存儲(如Amazon EBS)的使用也在測試階段。 目前,使用外部卷的應用程序只能縮放到一個實例,因為卷一次只能附加到一個任務。

9.網(wǎng)絡

k8s:網(wǎng)絡模型是一個扁平的網(wǎng)絡,使所有的pod互相通信。 網(wǎng)絡策略指定pod如何相互通信。 平面網(wǎng)絡通常作為overlay來實現(xiàn)。 該模型需要兩個CIDR:一個從中獲取IP地址,另一個用于服務。

mesos/marathon:網(wǎng)絡可以在主機模式或網(wǎng)橋模式下進行配置。 在主機模式下,主機端口由容器使用。 這可能會導致任何給定主機上的端口沖突。 在橋接模式下,容器端口使用端口映射橋接到主機端口。 主機端口可以在部署時動態(tài)分配。

10.服務發(fā)現(xiàn)

k8s:可以使用環(huán)境變量或DNS來找到服務。 運行pod時,Kubelet會添加一組環(huán)境變量。 Kubelet支持簡單的{SVCNAME_SERVICE_HOST}和{SVCNAME_SERVICE_PORT}變量,以及Docker鏈接兼容變量。 DNS服務器可作為附件使用。 對于每個Kubernetes服務,DNS服務器創(chuàng)建一組DNS記錄。 在整個群集中啟用DNS后,pod將能夠使用自動解析的服務名稱。

marathon:服務可以通過“命名VIP”發(fā)現(xiàn),它們是與IP和端口關(guān)聯(lián)的DNS記錄。 服務由Mesos-DNS自動分配DNS記錄。 可以創(chuàng)建一個可選的命名VIP; 通過VIP的請求是負載平衡的。

11.性能和節(jié)點支持

k8s:? Kubernetes可擴展到5,000個節(jié)點的集群。可以集群聯(lián)邦來擴展超出此限制。

mesos/marathon: Mesos的2層體系結(jié)構(gòu)(包括Marathon)非常具有可擴展性。據(jù)Digital Ocean介紹,Mesos和Marathon集群已經(jīng)擴展到10,000個節(jié)點。

優(yōu)缺點

k8s:各種各樣的存儲選項,包括本地SAN和公共云。 基于在Google上運行Linux容器的豐富經(jīng)驗。 在組織中更頻繁地部署。 Kubernetes也得到來自Google(GKE)和RedHat(OpenShift)的企業(yè)支持。 容器編排工具中最大的社區(qū)。 超過50,000個提交者和1200個貢獻者。

mesos/marathon:?Mesos + Marathon上的外部存儲,包括Amazon EBS在內(nèi)。。 Mesos被Mesosphere所利用。 Mesosphere公司的DCOS產(chǎn)品主要由其創(chuàng)建者和唯一的商業(yè)發(fā)行Mesosphere支持。。 較小的社區(qū)。 超過12,000個提交者和240個貢獻者。

k8s缺乏單一的供應商控制,會使?jié)撛诳蛻舻牟少彌Q策復雜化。社區(qū)包括Google,Red Hat和2000多位作者。(來源:CNCF)Kubernetes僅為容器編排而建造。它基于10多年在Google管理Linux容器的經(jīng)驗。Kubernetes 1.6可以擴展到5,000個節(jié)點的集群。超過5,000個節(jié)點的大規(guī)模可擴展性需要多個集群。

mesos/marathon:?單一供應商控制可能會考慮錯誤修復的問責制,以及與功能開發(fā)更好的協(xié)調(diào)。。 2層架構(gòu)允許部署其他框架(工作負載)。 例子包括Spark,Chronos和Redis。 一些組織,如蘋果,彭博,Netflix等已經(jīng)大規(guī)模地部署了超過10,000個節(jié)點的Mesos。 (來源:Mesosphere博客)

共同特點

開源項目。任何人都可以貢獻,但是Kubernetes享有更多,更多元化的社區(qū)參與。網(wǎng)絡功能,如負載均衡和DNS。記錄和監(jiān)視。 Kubernetes的外部工具包括Elasticsearch / Kibana(ELK),sysdig,cAdvisor,Heapster / Grafana / InfluxDB(參考:Kubernetes的記錄和監(jiān)測)。對于Mesos / Marathon,節(jié)點提供可以匯總的日志,可以使用外部工具進行監(jiān)視。 (參考:為Mesos / Marathon監(jiān)控日志記錄和調(diào)試)可以克服Docker和Docker API的限制。自動縮放支持本地。使用單獨的一套管理工具。 Kubernetes操作可以通過kubectl CLI和Kubernetes Dashboard來執(zhí)行。 Mesos使用多種界面:Mesos CLI,Mesos UI,Marathon CLI,Marathon UI。對于Kubernetes和Mesos,Marathon,自己動手安裝可能會很復雜。 Kubernetes的部署工具包括kubeadm,kops,kargo等。 Kubernetes部署指南中的更多詳細信息。由于采用Marathon的2層架構(gòu),集群管理的Zookeeper設(shè)置,負載平衡的HA代理等,Mesos的安裝過程可能非常復雜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內(nèi)容

  • kubernetes 簡介 一個迅速過一遍kubernetes 非常不錯的資源:基于Kubernetes構(gòu)建Doc...
    bradyjoestar閱讀 15,296評論 2 7
  • ?Kubernetes介紹1.背景介紹云計算飛速發(fā)展- IaaS- PaaS- SaaSDocker技術(shù)突飛猛進-...
    Zero___閱讀 14,745評論 0 21
  • 周偉濤,現(xiàn)數(shù)人科技(主要產(chǎn)品數(shù)人云,基于 Mesos 和 Docker 技術(shù)的云操作系統(tǒng))云平臺負責人,曾就職于國...
    優(yōu)云數(shù)智閱讀 4,794評論 0 14
  • 從注冊開始,就開始想我會嘗試去表述什么,然而過去了一個星期,我還是不知道。是拿在別處看到的高妙的人生觀來搏個眼球,...
    Aprrrrrrril閱讀 4,313評論 1 2
  • 我一直覺得自己是一個意志力不堅定的人,如果在打仗時代,我是不能忍受酷刑的,哈哈哈 其實這幾天分享功課越來越晚,時間...
    玉葉金枝閱讀 305評論 0 0