kubernetes 對比 mesos + marathon

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

Kubernetes概述

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


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

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

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

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

Scheduler:該組件將工作負(fù)載放置在適當(dāng)?shù)墓?jié)點(diǎn)上株憾。

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

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

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

Deployments:可以創(chuàng)建管理一組pod虹菲。部署可以與服務(wù)層一起用于水平擴(kuò)展或確笨渴ぃ可用性。

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

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

Mesos + Marathon概述

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

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


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

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

Mesos Slave:Slave這種類型的節(jié)點(diǎn)執(zhí)行實(shí)際工作任務(wù)逞姿,并且向master匯報可用資源辞嗡。

Framework:Framework向Master注冊,master允許Framework的任務(wù)在slave節(jié)點(diǎn)執(zhí)行滞造。

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

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

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

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. 應(yīng)用定義

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

marathon:從用戶的角度來看童擎,應(yīng)用程序?qū)⒆鳛镸arathon在節(jié)點(diǎn)上調(diào)度的任務(wù)運(yùn)行滴劲。 對于Mesos,應(yīng)用程序是一個框架顾复,可以是Marathon班挖,Cassandra,Spark等等捕透。 Marathon將容器調(diào)度為在從節(jié)點(diǎn)上執(zhí)行的任務(wù)。marathon 1.4引入了pod 的概念( 如同 Kubernetes pod)碴萧,但這不是marathon核心的一部分乙嘀。 節(jié)點(diǎn)可以根據(jù)機(jī)架,連接的存儲類型等進(jìn)行標(biāo)記破喻。啟動Docker容器時可以使用這些約束虎谢。

2.應(yīng)用的可擴(kuò)展性

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

marathon:可以使用Mesos CLI或UI几莽。 可以使用JSON定義來啟動Docker容器迅办,這些定義指定了存儲庫,資源章蚣,實(shí)例數(shù)量和要執(zhí)行的命令站欺。 可以通過使用Marathon UI進(jìn)行擴(kuò)展,Marathon調(diào)度程序?qū)⒏鶕?jù)指定的標(biāo)準(zhǔn)將這些容器分布在從節(jié)點(diǎn)上纤垂。 支持自動縮放矾策。 可以使用應(yīng)用程序組來部署多層應(yīng)用程序。

3.高可用

k8s:pod可以部署在不同節(jié)點(diǎn)上支持高可用峭沦。多個master節(jié)點(diǎn)贾虽,node 節(jié)點(diǎn)可以以負(fù)載均衡的方式對應(yīng)客戶端的訪問。etcd 可以以集群方式部署

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

4.負(fù)載均衡

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

marathon :主機(jī)端口可以映射到多個容器端口,作為其他應(yīng)用程序或最終用戶的前端巷送。

5.應(yīng)用程序自動伸縮

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

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

6.應(yīng)用程序滾動升級,回滾

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

marathon:?部署支持應(yīng)用程序的滾動升級惊窖。失敗的升級可以使用回滾更改的更新部署進(jìn)行修復(fù)刽宪。

7.健康檢查

k8s:健康檢查有兩種:活躍(即應(yīng)用程序響應(yīng))和準(zhǔn)備(應(yīng)用程序響應(yīng),但正在忙著準(zhǔn)備界酒,還沒有能夠服務(wù))圣拄。

marathon:運(yùn)行狀況檢查可以指定為針對應(yīng)用程序的任務(wù)運(yùn)行。健康檢查請求可用于許多協(xié)議毁欣,包括HTTP庇谆,TCP和其他協(xié)議岳掐。

8.存儲

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

mesos/marathon:本地持久性卷(測試版)支持有狀態(tài)的應(yīng)用程序熊咽,如MySQL莫鸭。 需要時,可以使用相同的卷在同一節(jié)點(diǎn)上重新啟動任務(wù)横殴。 外部存儲(如Amazon EBS)的使用也在測試階段被因。 目前,使用外部卷的應(yīng)用程序只能縮放到一個實(shí)例衫仑,因為卷一次只能附加到一個任務(wù)梨与。

9.網(wǎng)絡(luò)

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

mesos/marathon:網(wǎng)絡(luò)可以在主機(jī)模式或網(wǎng)橋模式下進(jìn)行配置。 在主機(jī)模式下苏研,主機(jī)端口由容器使用等浊。 這可能會導(dǎo)致任何給定主機(jī)上的端口沖突。 在橋接模式下楣富,容器端口使用端口映射橋接到主機(jī)端口凿掂。 主機(jī)端口可以在部署時動態(tài)分配伴榔。

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

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

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

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

k8s:? Kubernetes可擴(kuò)展到5,000個節(jié)點(diǎn)的集群∈撸可以集群聯(lián)邦來擴(kuò)展超出此限制瞳抓。

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

優(yōu)缺點(diǎn)

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

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

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

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

共同特點(diǎn)

開源項目杈帐。任何人都可以貢獻(xiàn),但是Kubernetes享有更多专钉,更多元化的社區(qū)參與挑童。網(wǎng)絡(luò)功能,如負(fù)載均衡和DNS跃须。記錄和監(jiān)視站叼。 Kubernetes的外部工具包括Elasticsearch / Kibana(ELK),sysdig菇民,cAdvisor尽楔,Heapster / Grafana / InfluxDB(參考:Kubernetes的記錄和監(jiān)測)。對于Mesos / Marathon第练,節(jié)點(diǎn)提供可以匯總的日志阔馋,可以使用外部工具進(jìn)行監(jiān)視。 (參考:為Mesos / Marathon監(jiān)控日志記錄和調(diào)試)可以克服Docker和Docker API的限制娇掏。自動縮放支持本地呕寝。使用單獨(dú)的一套管理工具。 Kubernetes操作可以通過kubectl CLI和Kubernetes Dashboard來執(zhí)行婴梧。 Mesos使用多種界面:Mesos CLI下梢,Mesos UI,Marathon CLI塞蹭,Marathon UI孽江。對于Kubernetes和Mesos,Marathon番电,自己動手安裝可能會很復(fù)雜岗屏。 Kubernetes的部署工具包括kubeadm,kops,kargo等这刷。 Kubernetes部署指南中的更多詳細(xì)信息涎跨。由于采用Marathon的2層架構(gòu),集群管理的Zookeeper設(shè)置崭歧,負(fù)載平衡的HA代理等,Mesos的安裝過程可能非常復(fù)雜撞牢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末率碾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子屋彪,更是在濱河造成了極大的恐慌所宰,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畜挥,死亡現(xiàn)場離奇詭異仔粥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蟹但,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門躯泰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人华糖,你說我怎么就攤上這事麦向。” “怎么了客叉?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵诵竭,是天一觀的道長。 經(jīng)常有香客問我兼搏,道長卵慰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任佛呻,我火速辦了婚禮裳朋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吓著。我一直安慰自己再扭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布夜矗。 她就那樣靜靜地躺著泛范,像睡著了一般。 火紅的嫁衣襯著肌膚如雪紊撕。 梳的紋絲不亂的頭發(fā)上罢荡,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼区赵。 笑死惭缰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笼才。 我是一名探鬼主播漱受,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骡送!你這毒婦竟也來了昂羡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤摔踱,失蹤者是張志新(化名)和其女友劉穎虐先,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體派敷,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛹批,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了篮愉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腐芍。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖试躏,靈堂內(nèi)的尸體忽然破棺而出甸赃,到底是詐尸還是另有隱情,我是刑警寧澤冗酿,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布埠对,位于F島的核電站,受9級特大地震影響裁替,放射性物質(zhì)發(fā)生泄漏项玛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一弱判、第九天 我趴在偏房一處隱蔽的房頂上張望襟沮。 院中可真熱鬧,春花似錦昌腰、人聲如沸开伏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽固灵。三九已至,卻和暖如春劫流,著一層夾襖步出監(jiān)牢的瞬間巫玻,已是汗流浹背丛忆。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仍秤,地道東北人熄诡。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像诗力,于是被迫代替她去往敵國和親凰浮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

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

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