kubernetes中的CPU親和性設(shè)置-這一篇就夠了

雖然用戶可以Kubernetes隨意創(chuàng)建和使用Pod粘捎,但是有些特殊的使用場景需要更高的性能和更短的訪問延時(shí)十绑。kubelet提供了一些方法來管理各種復(fù)雜的工作負(fù)載野建。

準(zhǔn)備工作

具有一個(gè)部署好的Kubernetes集群梳玫,并且可以使用kubectl命令行工具與集群互通扬蕊。如果您還沒有集群谊囚,則可以使用Minikube創(chuàng)建一個(gè)集群怕享,也可以使用以下兩種工具進(jìn)行部署:

可以通過命令kubectl version來核查kubernetes的版本。

kubernetes的CPU 管理策略

默認(rèn)情況下镰踏,kubelet使用CFS quota 機(jī)制限制Pod 的CPU資源函筋。當(dāng)node上運(yùn)行許多設(shè)置了CPU limit的Pod時(shí),不同pod上的工作負(fù)載可能在不同的CPU 核心上來回切換奠伪,不同的Pod中的計(jì)算task運(yùn)行在哪個(gè)CPU核心上具體取決于Pod是否設(shè)置了limit以及在被執(zhí)行時(shí)哪個(gè)CPU核心時(shí)空閑可用的跌帐。許多業(yè)務(wù)的工作負(fù)載在不同的CPU核心之間進(jìn)行不停切換的情況并不敏感,因此也感知不到不停地CPU切換核心帶來的負(fù)面影響绊率。

但是谨敛,在對(duì)CPU cache親和性和調(diào)度延遲敏感的業(yè)務(wù)場景中,kubelet可以通過設(shè)置CPU管理策略來確定node上CPU核心調(diào)度的優(yōu)先級(jí)滤否,來達(dá)到較好的性能脸狸。

配置

通過kubelet的 --cpu-manager-policy 配置項(xiàng)來設(shè)置CPU的管理策略,該配置項(xiàng)有兩個(gè)可選值:

  • none: 默認(rèn)策略藐俺。
  • static: 允許node上具有特定資源特征的Pod被授予更高的CPU親和力和排他性炊甲。

CPU manager會(huì)定期通過CRI對(duì)資源狀態(tài)進(jìn)行更新,以使內(nèi)存欲芹、CPU實(shí)際使用數(shù)量與cgroupfs保持一致卿啡。可以通過Kubelet配置值--cpu-manager-reconcile-period設(shè)置資源狀態(tài)更新頻率菱父。如果未指定颈娜,則默認(rèn)為與--node-status-update-frequency的值相同。

None

none策略會(huì)顯式的使用默認(rèn)的CPU親和性方案滞伟,CPU的親和性完全依賴于操作系統(tǒng)的自動(dòng)調(diào)度揭鳞。對(duì)于Guaranteed pods 的CPU限制會(huì)強(qiáng)制POD使用CFS的配合。

Static

static 策略:若Guaranteed級(jí)別的Pod中的Container中的CPU限制是大于等于1的整數(shù)梆奈,那么Container就可以運(yùn)行在node上特定的一個(gè)或者幾個(gè)獨(dú)享CPU核心上野崇。這種CPU核心的獨(dú)享是通過cpuset cgroup controller來保證的.

Note: 像container runtime和kubelet這樣的系統(tǒng)服務(wù)也可以運(yùn)行在獨(dú)享CPU上。這種獨(dú)享性是相對(duì)于其他的Pod而言的亩钟。

Note: CPU Manager不支持在運(yùn)行時(shí)對(duì)CPU進(jìn)行online和offline操作乓梨。若node上的CPU發(fā)生了改變鳖轰,則必須對(duì)該node進(jìn)行維護(hù)并且通過刪除kubelet根目錄下的cpu_manager_state狀態(tài)文件對(duì)CPU manager進(jìn)行手動(dòng)重置。

該策略管理著一個(gè)CPU的共享池扶镀,該共享池初始包含了node上的所有CPU蕴侣。可分配的獨(dú)享CPU的數(shù)量等于node上CPU的總數(shù)減去kubelet通過--kube-reserved 或者 --system-reserved 選項(xiàng)指定的保留CPU的數(shù)目臭觉。通過這些選項(xiàng)指定的保留CPU的個(gè)數(shù)必須是整數(shù)昆雀,并且在初始的共享池中按照物理CPU的Core ID的升序順序依次設(shè)置為保留狀態(tài)。BestEffortBurstable類型的Pod以及CPU核數(shù)設(shè)置為非整數(shù)的 Guaranteed類型的Pod會(huì)已共享的方式使用共享池中的剩余CPU蝠筑。只有requests和limits的值為整數(shù)的 Guaranteed類型的Pod才會(huì)以獨(dú)享的方式使用共享池中的CPU狞膘。

Note: 當(dāng)啟用static策略時(shí),必須通過--kube-reserved和/或--system-reserved選項(xiàng)為kubelet保留一部分CPU什乙,而保留的數(shù)量必須大于0挽封。因?yàn)槿魹閗ubelet的保留CPU為零的話,共享池變就有變?yōu)榭盏目赡苄浴?/p>

當(dāng)node滿足Guaranteed級(jí)別的Pod的資源需求且啟用了static策略時(shí)臣镣,該pod將會(huì)被調(diào)度到該node上辅愿,進(jìn)而從該node的共享池中移除pod所需要的數(shù)量的CPU核心并將這些CPU放置到容器的cpuset中。 static策略可以增加計(jì)算密集型工作負(fù)載的CPU親和性并減少CPU上下文切換的次數(shù)忆某。

假設(shè)有如下幾種Pods点待,我們針對(duì)其進(jìn)行分析:

spec:
  containers:
  - name: nginx
    image: nginx

由于沒有設(shè)置 requestslimits,因此該P(yáng)od是BestEffort級(jí)別的. 該P(yáng)od會(huì)運(yùn)行在共享池中.

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"

由于該P(yáng)od的requests值與limits值是不同的褒繁,并且cpu的資源限制也沒有指定亦鳞,因此該P(yáng)od是Burstable級(jí)別的。該P(yáng)od運(yùn)行在共享池中棒坏。

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
        cpu: "2"
      requests:
        memory: "100Mi"
        cpu: "1"

由于該P(yáng)od的requests值與limits值是不同的燕差,因此該P(yáng)od是Burstable級(jí)別的。該P(yáng)od運(yùn)行在共享池中坝冕。

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
        cpu: "2"
      requests:
        memory: "200Mi"
        cpu: "2"

由于該P(yáng)od同時(shí)指定了requestslimits的值并且兩者相同徒探,因此該P(yáng)od是Guaranteed級(jí)別的。除此之外喂窟,container的CPU限制是大于等于1的整數(shù)测暗,因此nginx container會(huì)運(yùn)行在兩個(gè)獨(dú)占的CPU上。

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
        cpu: "1.5"
      requests:
        memory: "200Mi"
        cpu: "1.5"

由于該P(yáng)od同時(shí)指定了requestslimits的值并且兩者相同磨澡,因此該P(yáng)od是Guaranteed級(jí)別的碗啄。但是由于container中對(duì)CPU的資源限制是非整數(shù),因此該P(yáng)od運(yùn)行在共享池中稳摄,無法獨(dú)占CPU稚字。

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
        cpu: "2"

該P(yáng)od由于只設(shè)置了limits的值,而requests 在沒有明確指定的情況下,默認(rèn)與limits的值相等胆描,因此該P(yáng)od是 Guaranteed 級(jí)別瘫想。并且由于container的CPU的資源限制是一個(gè)大于等于1的整數(shù)。所以nginx container會(huì)運(yùn)行在2個(gè)獨(dú)享的CPU核心上昌讲。

總結(jié)

只有同時(shí)滿足如下條件時(shí)国夜,容器才可以運(yùn)行在獨(dú)享CPU上:

  • 1 通過kubelet的 --cpu-manager-policy 配置項(xiàng)啟用static策略
  • 2 容器必須是Guaranteed的級(jí)別
  • 3 容器的CPU限制必須是大于等于1的整數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市短绸,隨后出現(xiàn)的幾起案子车吹,更是在濱河造成了極大的恐慌,老刑警劉巖醋闭,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件礼搁,死亡現(xiàn)場離奇詭異,居然都是意外死亡目尖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門扎运,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑟曲,“玉大人,你說我怎么就攤上這事豪治《床Γ” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵负拟,是天一觀的道長烦衣。 經(jīng)常有香客問我,道長掩浙,這世上最難降的妖魔是什么花吟? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮厨姚,結(jié)果婚禮上衅澈,老公的妹妹穿的比我還像新娘。我一直安慰自己谬墙,他們只是感情好今布,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拭抬,像睡著了一般部默。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上造虎,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天傅蹂,我揣著相機(jī)與錄音,去河邊找鬼累奈。 笑死贬派,一個(gè)胖子當(dāng)著我的面吹牛急但,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搞乏,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼波桩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了请敦?” 一聲冷哼從身側(cè)響起镐躲,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侍筛,沒想到半個(gè)月后萤皂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匣椰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年裆熙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禽笑。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡入录,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出佳镜,到底是詐尸還是另有隱情僚稿,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布蟀伸,位于F島的核電站蚀同,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啊掏。R本人自食惡果不足惜蠢络,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迟蜜。 院中可真熱鬧谢肾,春花似錦、人聲如沸小泉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽微姊。三九已至酸茴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兢交,已是汗流浹背薪捍。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酪穿。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓凳干,卻偏偏與公主長得像,于是被迫代替她去往敵國和親被济。 傳聞我的和親對(duì)象是個(gè)殘疾皇子救赐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348