docker info

Docker容器技術(shù)信息傳播和服務(wù)平臺

您目前處于:

DockerInfo

>

Kubernetes

>

【有容云干貨-容器系列】Kubernetes調(diào)度核心解密:從Google Borg說起

【有容云干貨-容器系列】Kubernetes調(diào)度核心解密:從Google Borg說起

2017-03-03分類:Kubernetes閱讀(871)評論(0)有容云

在之前“容器生態(tài)圈腦圖大放送”文章中我們根據(jù)容器生態(tài)圈腦圖读虏,從下至上從左至右痪署,依次介紹了容器生態(tài)圈中8個組件朵锣,其中也提到Kubernetes 很钓,是一個以 Google Borg 為原型的開源項目谤饭《簦可實現(xiàn)大規(guī)模蛀柴、分布式拉一、高可用的容器集群。本篇我們重點介紹Kubernetes前世今生唧龄。

目前三大主流的容器平臺Swarm, Mesos和Kubernetes具有不同的容器調(diào)度系統(tǒng):

Swarm的特點是直接調(diào)度Docker容器兼砖,并且提供和標準Docker API一致的API。

Mesos針對不同的運行框架采用相對獨立的調(diào)度系統(tǒng),其中Marathon框架提供了Docker容器的原生支持讽挟。

Kubernetes則采用了Pod和Label這樣的概念把容器組合成一個個的互相存在依賴關(guān)系的邏輯單元懒叛。

相關(guān)容器被組合成Pod后被共同部署和調(diào)度,形成服務(wù)(Service)耽梅。這個是Kubernetes和Swarm薛窥,Mesos的主要區(qū)別。相對來說褐墅,Kubernetes采用這樣的方式簡化了集群范圍內(nèi)相關(guān)容器被共同調(diào)度管理的復(fù)雜性拆檬。換一種角度來看,Kubernetes采用這種方式能夠相對容易的支持更強大妥凳,更復(fù)雜的容器調(diào)度算法竟贯。

談到Kubernetes, 我們就不能不提到Google的Borg系統(tǒng)。Google的Borg系統(tǒng)群集管理器負責(zé)管理幾十萬個以上的jobs逝钥,來自幾千個不同的應(yīng)用屑那,跨多個集群,每個集群有上萬個機器艘款。它通過管理控制持际、高效的任務(wù)包裝、超售哗咆、和進程級別性能隔離實現(xiàn)了高利用率蜘欲。它支持高可用性應(yīng)用程序與運行時功能,最大限度地減少故障恢復(fù)時間晌柬,減少相關(guān)故障概率的調(diào)度策略姥份。Kubernetes的架構(gòu)設(shè)計基本上是參照了Google Borg。

本文結(jié)合Google發(fā)布的相關(guān)論文和視頻年碘,初步介紹了Google Borg的資源調(diào)度澈歉,以及它對Kubernetes容器調(diào)度系統(tǒng)產(chǎn)生的影響和未來走向。關(guān)于本文內(nèi)容的具體技術(shù)細節(jié)描述請參見Google論文以及Kubernetes文檔屿衅。

Borg調(diào)度介紹

本文的第一部分我們先介紹一下看看Borg埃难。 Google的Borg系統(tǒng)運行幾十萬個以上的任務(wù),來自幾千個不同的應(yīng)用涤久,跨多個集群涡尘,每個集群(cell))有上萬個機器。它通過管理控制响迂、高效的任務(wù)包裝悟衩、超售、和進程級別性能隔離實現(xiàn)了高利用率栓拜。它支持高可用性應(yīng)用程序與運行時功能,最大限度地減少故障恢復(fù)時間,減少相關(guān)故障概率的調(diào)度策略幕与。以下就是Borg的系統(tǒng)架構(gòu)圖挑势。其中Scheduler負責(zé)任務(wù)的調(diào)度。

Borg調(diào)度測試

Borg對開發(fā)者隱藏了系統(tǒng)資源管理和故障處理細節(jié)啦鸣,我們來從開發(fā)者的角度來看如何在Borg中運行一萬個Hello World的任務(wù)潮饱。開發(fā)者只需要完成以下config file并且提交給Borg。

大家可以看到這樣的一個config file包含了集群名稱诫给,任務(wù)二進制, 資源要求以及Replica數(shù)量香拉。Kubernetes的YAML文件很大程度上繼承了這些配置項。

當我們提交這樣一個Hello World 任務(wù)給Borg后中狂,調(diào)度器Scheduler會根據(jù)系統(tǒng)資源自動部署一萬個Hello World任務(wù)到主機上凫碌。下圖是一個部署時間表。

可以看到經(jīng)過了3分鐘后大約一萬個任務(wù)就開始運行了胃榕。原因在于其中會有一些任務(wù)因為各種各樣的原因停止運行盛险。

下圖可以看到3分鐘后大概只有9993個任務(wù)在運行。Borg會自動進行錯誤處理并且部署新的任務(wù)勋又。

Borg調(diào)度核心

那么如何提升整個Borg系統(tǒng)的資源利用率呢苦掘?核心的解決方案就是根據(jù)主機資源合理的調(diào)度任務(wù),提高系統(tǒng)效率楔壤。Borg主要從以下幾個方面著手:

1鹤啡、在同一臺主機上跑多個任務(wù)

2、采用最優(yōu)的打包算法

合理的把成比例的CPU蹲嚣、Memory資源分配給任務(wù)递瑰,避免資源阻塞造成浪費。下圖橙色標識的主機就是因為CPU或者內(nèi)存資源占用超過合理比例而造成另外一種資源的浪費端铛。

3泣矛、在系統(tǒng)中同時跑生成和非生產(chǎn)任務(wù)

Borg系統(tǒng)的任務(wù)分為生產(chǎn)型(Prod)任務(wù),即高優(yōu)先級任務(wù)和非生產(chǎn)的(non-prod)任務(wù)禾蚕。大多數(shù)長期服務(wù)是Prod的您朽,大部分批處理任務(wù)是non-prod的。通常情況下换淆,生產(chǎn)型任務(wù)會保留一部分資源以應(yīng)付極端情況哗总,這些資源可以被用來跑非生產(chǎn)型應(yīng)用,當生產(chǎn)型任務(wù)需要更多資源的時候倍试,非生產(chǎn)型任務(wù)會被調(diào)度出系統(tǒng)讯屈。

4、資源回收

從下圖可以看到县习,Borg會根據(jù)現(xiàn)有資源消耗情況評估任務(wù)對未來資源的需求作為Reservation涮母,把綠色部分的資源回收再利用給那些可以忍受低質(zhì)量資源的工作谆趾。Borg調(diào)度器使用限制資源(limit)來計算Prod任務(wù)的可用性,這些Prod任務(wù)從來不依賴于回收的資源叛本,也不提供超售的資源沪蓬;對于non-prod的任務(wù)則使用了目前運行任務(wù)的Reservation,新的任務(wù)也可以被調(diào)度到回收資源上去来候。當一臺主機因為對資源預(yù)估不足時跷叉,Borg會限制或者殺掉non-prod任務(wù)。資源預(yù)估可以采用激進或者保守的策略营搅,Borg目前采用的介于兩者之間的中庸策略云挟。

Kubernetes借鑒了Borg的整體架構(gòu)思想。如下圖转质,其中Pod調(diào)度也是由Scheduler組件完成的园欣。

有一種情況下,Scheduler不參與Pod調(diào)度峭拘,那就是用NodeName指定部署主機俊庇。

Kubernetes資源調(diào)度

和Borg類似,Kubernetes的資源分為兩種屬性鸡挠』员ィ可壓縮資源(例如CPU循環(huán),Disk I/O帶寬)都是可以被限制和被回收的拣展,對于一個Pod來說可以降低這些資源的使用量而不去殺掉Pod彭沼。不可壓縮資源(例如內(nèi)存、硬盤空間)一般來說不殺掉Pod就沒法回收备埃。未來Kubernetes會加入更多資源姓惑,如網(wǎng)絡(luò)帶寬,存儲IOPS的支持按脚。

Kubernetes調(diào)度器使用Predicates和Priorites來決定一個Pod應(yīng)該運行在哪一個節(jié)點上于毙。Predicates是強制性規(guī)則,用來形容主機匹配Pod所需要的資源辅搬,如果沒有任何主機滿足該Predicates, 則該Pod會被掛起唯沮,直到有主機能夠滿足】八欤可用的Predicates如下:

PodFitPorts:沒有任何端口沖突

PodFitsResurce:有足夠的資源運行Pod

NoDiskConflict:有足夠的空間來滿足Pod和鏈接的數(shù)據(jù)卷

MatchNodeSelector:能夠匹配Pod中的選擇器查找參數(shù)介蛉。

HostName:能夠匹配Pod中的Host參數(shù)

如果調(diào)度器發(fā)現(xiàn)有多個主機滿足條件,那么Priorities就用來判斷哪一個主機最適合運行Pod溶褪。Priorities是一個鍵值對币旧,key表示名稱,value表示權(quán)重猿妈〈盗猓可用的Priorities如下:

LeastRequestdPriority:計算Pods需要的CPU和內(nèi)存在當前節(jié)點可用資源的百分比巍虫,具有最小百分比的節(jié)點就是最優(yōu)的。

BalanceResourceAllocation:擁有類似內(nèi)存和CPU使用的節(jié)點毁葱。

ServicesSpreadingPriority:優(yōu)先選擇擁有不同Pods的節(jié)點垫言。

EqualPriority:給所有集群的節(jié)點同樣的優(yōu)先級,僅僅是為了做測試倾剿。

Kubernetes調(diào)度總結(jié)

為了對pod所運行時要求的資源做出限制,Kubernetes通過配額YAML文件來設(shè)置Resource quotas和limit蚌成,從而管理獨立Pod以及項目中所有Pod(即Namespace)的資源要求前痘。未來Kubernetes會針對Pod資源QoS做出更多功能增強,以應(yīng)對日益復(fù)雜的容器應(yīng)用需求担忧。

我們可以看到基于資源分配的任務(wù)調(diào)度是Borg和Kubernetes的核心組件芹缔。兩者的調(diào)度模塊都處于整個系統(tǒng)的核心位置。Kubernetes的調(diào)度策略源自Borg, 但是為了更好的適應(yīng)新一代的容器應(yīng)用瓶盛,以及各種規(guī)模的部署最欠,Kubernetes的調(diào)度策略相應(yīng)做的更加靈活,也更加容易理解和使用惩猫。

干貨大放送

請大家掃描以下二維碼關(guān)注本公眾號并回復(fù)【進群】芝硬,有容云小助手會第一時間拉您進入【有容云Docker技術(shù)交流群】,干貨大放送正在敬候您的光臨轧房,期待大家就技術(shù)的更多細節(jié)和疑問與群里的大牛們進行咨詢探討拌阴。掃描以下二維碼

往期回顧:【干貨-容器系列】補腦專用,容器生態(tài)圈腦圖大放送

感謝各界朋友支持奶镶,更多精彩內(nèi)容敬請期待迟赃!

分享到:更多(0)

上一篇:將Rancher Catalog的Prometheus模板從Cattle環(huán)境轉(zhuǎn)換到Kubernetes環(huán)境下一篇:在開啟TLS的Kubernetes1.6集群上安裝Dashboard

標簽:容器有容云

相關(guān)推薦

DevOps和容器:本地or云端,如何選擇厂镇?

CoreOS和Docker分別要將rkt和containerd捐贈給CNCF

容器標準化之道

Docker容器的自動化監(jiān)控實現(xiàn)

生產(chǎn)環(huán)境部署容器的五大挑戰(zhàn)及應(yīng)對之策

攜程容器云實踐

數(shù)據(jù)庫容器化的價值——反駁數(shù)據(jù)庫不適合容器化的錯誤觀點

容器網(wǎng)絡(luò):盤點纤壁,解釋與分析

登錄

還沒有評論,快來搶沙發(fā)吧捺信!

Docker信息社區(qū)正在使用暢言

Docker是什么

程序員理解的定義:Docker是Docker Inc.公司開源的一個基于Linux技術(shù)構(gòu)建容器的容器引擎酌媒,普通人能理解的定義:“沒有集裝箱,就不會有全球化残黑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馍佑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梨水,更是在濱河造成了極大的恐慌拭荤,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疫诽,死亡現(xiàn)場離奇詭異舅世,居然都是意外死亡旦委,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門雏亚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缨硝,“玉大人,你說我怎么就攤上這事罢低〔楸纾” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵网持,是天一觀的道長宜岛。 經(jīng)常有香客問我,道長功舀,這世上最難降的妖魔是什么萍倡? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮辟汰,結(jié)果婚禮上列敲,老公的妹妹穿的比我還像新娘。我一直安慰自己帖汞,他們只是感情好戴而,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布岸梨。 她就那樣靜靜地躺著重付,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炼吴。 梳的紋絲不亂的頭發(fā)上鹿鳖,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天扁眯,我揣著相機與錄音,去河邊找鬼翅帜。 笑死姻檀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涝滴。 我是一名探鬼主播绣版,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歼疮!你這毒婦竟也來了杂抽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤韩脏,失蹤者是張志新(化名)和其女友劉穎缩麸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赡矢,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡杭朱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年阅仔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧械。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡八酒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刃唐,到底是詐尸還是另有隱情羞迷,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布画饥,位于F島的核電站闭树,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荒澡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一与殃、第九天 我趴在偏房一處隱蔽的房頂上張望单山。 院中可真熱鬧,春花似錦幅疼、人聲如沸米奸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悴晰。三九已至,卻和暖如春逐工,著一層夾襖步出監(jiān)牢的瞬間铡溪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工泪喊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棕硫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓袒啼,卻偏偏與公主長得像哈扮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚓再,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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