Kubernetes中的資源分配和限制策略

Kubernetes是一個容器集群管理平臺碧浊,Kubernetes需要統(tǒng)計整體平臺的資源使用情況欧漱,合理地將資源分配給容器使用库继,并且要保證容器生命周期內(nèi)有足夠的資源來保證其運行退唠。 同時鹃锈,如果資源發(fā)放是獨占的,即資源已發(fā)放給了個容器瞧预,同樣的資源不會發(fā)放給另外一個容器屎债,對于空閑的容器來說占用著沒有使用的資源比如CPU是非常浪費的仅政,Kubernetes需要考慮如何在優(yōu)先度和公平性的前提下提高資源的利用率。為了實現(xiàn)資源被有效調(diào)度和分配同時提高資源的利用率盆驹,Kubernetes采用request和limit兩種限制類型來對資源進(jìn)行分配圆丹。

在中臺這邊的實踐中,多次遇到各種場景的容器資源限制等問題躯喇”璺猓基于此,特整理相關(guān)的知識點廉丽,供大家參閱倦微。

1 kuberneters中request和limit限制方式說明

request 容器使用的最小資源需求,創(chuàng)建容器的時候正压,是最小的資源要求欣福。只有當(dāng)節(jié)點上可分配資源量>=容器資源請求數(shù)時才允許將容器調(diào)度到該節(jié)點。

也就是說焦履,創(chuàng)建容器時候劣欢,分配資源是按照request指定的值進(jìn)行獨占的,容器至少要保留request指定的資源裁良。

request參數(shù)不限制容器的最大可使用資源凿将。

limit 表明容器能使用資源的最大值,設(shè)置為0表示使用資源無上限价脾。

2 request和limit的區(qū)別

request 能夠保證Pod有足夠的資源來運行牧抵,而limit 則是防止某個Pod無限制地使用資源,導(dǎo)致其他Pod崩潰侨把。

兩者之間必須滿足關(guān)系:

0<=request<=limit<=Infinity 

如果limit為0表示不對資源進(jìn)行限制犀变,這時可以小于request

3 request 和 limit的幾個使用場景

3.1 典型的資源分配示例

通過一個示例簡述request和limit參數(shù)的使用場景。

假設(shè)PaaS的一個節(jié)點有4U4G可用資源秋柄。已經(jīng)部署2個pod获枝,記為pod1, pod2。每個pod的資源設(shè)置為

(CPU Requst,CPU limit,Memory Requst, Memory limit)= (1U, 2U, 1G,1G).

節(jié)點上CPU和內(nèi)存的資源分配情況如下圖:
[圖片上傳失敗...(image-935055-1555552418778)]

已經(jīng)分配的CPU資源為:1U(分配Pod1)+1U(分配Pod2)=2U骇笔,剩余可以分配的CPU資源為2U

已經(jīng)分配的內(nèi)存資源為:1G(分配Pod1)+1G(分配Pod2)=2G省店,剩余可以分配的內(nèi)存資源為2G

所以該節(jié)點可以再部署一個(CPU Requst, Memory Requst)=(2U,2G)的Pod,或者部署2個(CPU Requst, Memory Requst)=(1U,1G)的Pod

在資源限制方面笨触,每個Pod1和Pod2使用資源的上限為(2U,1G)懦傍,即在資源空閑的情況下,Pod使用CPU的量最大能達(dá)到2U芦劣,使用內(nèi)存的最大量為1G粗俱。從CPU資源的角度,對于資源使用上線為2U的Pod虚吟,通過設(shè)置request為1U寸认,實現(xiàn)了2倍數(shù)量的Pod的部署签财,提高了資源的使用效率。

3.2 復(fù)雜場景

依然假設(shè)PaaS的一個節(jié)點有4U4G可用資源偏塞,節(jié)點上部署了4個pod唱蒸,記為pod1~4。每個Pod的資源設(shè)置為(CPU Requst,CPU limit,Memory Requst, Memory limit)= (1U, 2U, 512M,512M)烛愧。資源分配情況如下圖:

[圖片上傳失敗...(image-84aeaf-1555552418778)]

按照request的要求油宜,那么已經(jīng)沒有可以分配的CPU資源了掂碱。但是怜姿,由于Pod1~4業(yè)務(wù)負(fù)載比較低,造成了CPU的利用率較低疼燥,造成資源浪費沧卢。這個時候可以通過將request的值設(shè)置為0,實現(xiàn)對資源的進(jìn)一步利用醉者。

在此節(jié)點上部署4個pod5~8但狭, 資源限制為(CPU Requst,CPU limit,Memory Requst, Memory limit)= (0U, 0U, 512M,512M)。資源的使用情況如下圖所示:

[圖片上傳失敗...(image-78aeae-1555552418778)]

Pod5~8 能夠在Pod(1~4)空閑時撬即,使用節(jié)點上剩余的CPU資源立磁,從而進(jìn)一步提高資源的使用率。

4 kubenerters中資源的搶占

Kubernetes中資源通過requestlimit的設(shè)置剥槐,能夠?qū)崿F(xiàn)容器對資源的更高效的使用唱歧。在如果多個容器同時對資源進(jìn)行充分利用,資源使用盡量的接近limit粒竖。 Node節(jié)點上的資源總量要小于所有Pod中l(wèi)imit的總和颅崩,就會發(fā)生資源搶占。

對于資源搶占的情況蕊苗,Kubernetes根據(jù)資源能不能進(jìn)行伸縮進(jìn)行分類沿后,分為可壓縮資源和不可以壓縮資源。

  • CPU資源--是現(xiàn)在支持的一種可壓縮資源朽砰。
  • 內(nèi)存資源和磁盤資源為現(xiàn)在支持的不可壓縮資源尖滚。

4.1 可壓縮資源的搶占策略---按照Requst的比值進(jìn)行分配

假設(shè)有pod1~4 分別占用(CPU Requst,CPU limit,Memory Requst, Memory limit)= (1U, 2U, 1G,1G)。當(dāng)四個pod的負(fù)載都很高瞧柔,CPU使用都超過1U的情況下熔掺,這個時候每個pod將按照request設(shè)置的CPU比例進(jìn)行時間片調(diào)度。由于4個Pod設(shè)置的request都為1U非剃,發(fā)生資源搶占時置逻,每個Pod分到的CPU時間片為1U/(1U)*4,實際占用的CPU核數(shù)為1U备绽。

這里涉及到docker關(guān)于CPU占用的策略券坞。CPU占用可以按照占用指定核或者占用時間片資源來區(qū)分鬓催。默認(rèn)情況下使用的是時間片。

4.2 不可壓縮資源的搶占策略---按照優(yōu)先級的不同恨锚,進(jìn)行Pod的驅(qū)逐

對于不可壓縮資源宇驾,如果發(fā)生資源搶占,則會按照優(yōu)先級的高低進(jìn)行Pod的驅(qū)逐猴伶。驅(qū)逐的策略為: 優(yōu)先驅(qū)逐request=limit=0的Pod课舍,其次驅(qū)逐0<request<limit<Infinity (limit為0的情況也包括在內(nèi))。 0<request==limit的Pod的會被保留他挎,除非出現(xiàn)刪除其他Pod后筝尾,節(jié)點上剩余資源仍然沒有達(dá)到Kubernetes需要的剩余資源的需求。

由于對于不可壓縮資源办桨,發(fā)生搶占的情況會出Pod被意外Kill掉的情況筹淫,所以建議對于不可以壓縮資源(Memory,Disk)的設(shè)置成0<request==limit呢撞。

參考資料

http://www.cnblogs.com/sparkdev/p/8032330.html
https://www.cnblogs.com/sparkdev/p/8052522.html
https://cloud.tencent.com/developer/article/1004976

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末损姜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子殊霞,更是在濱河造成了極大的恐慌摧阅,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绷蹲,死亡現(xiàn)場離奇詭異棒卷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瘸右,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門娇跟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人太颤,你說我怎么就攤上這事苞俘。” “怎么了龄章?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵吃谣,是天一觀的道長。 經(jīng)常有香客問我做裙,道長岗憋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任锚贱,我火速辦了婚禮仔戈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己监徘,他們只是感情好晋修,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凰盔,像睡著了一般墓卦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上户敬,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天落剪,我揣著相機(jī)與錄音,去河邊找鬼尿庐。 笑死忠怖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屁倔。 我是一名探鬼主播脑又,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼暮胧,長吁一口氣:“原來是場噩夢啊……” “哼锐借!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起往衷,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钞翔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后席舍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體布轿,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年来颤,在試婚紗的時候發(fā)現(xiàn)自己被綠了汰扭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡福铅,死狀恐怖萝毛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滑黔,我是刑警寧澤笆包,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站略荡,受9級特大地震影響庵佣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汛兜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一巴粪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦肛根、人聲如沸衡创。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璃氢。三九已至,卻和暖如春狮辽,著一層夾襖步出監(jiān)牢的瞬間一也,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工喉脖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留椰苟,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓树叽,卻偏偏與公主長得像舆蝴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子题诵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

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