vpa 原理簡(jiǎn)介

1. 原生vpa簡(jiǎn)介

VPA 全稱 Vertical Pod Autoscaler类垦,即垂直 Pod 自動(dòng)擴(kuò)縮容敦姻,可以根據(jù)容器資源使用情況自動(dòng)設(shè)置 CPU 和 內(nèi)存 的請(qǐng)求值耕渴,從而允許在節(jié)點(diǎn)上進(jìn)行適當(dāng)?shù)恼{(diào)度伴逸,以便為每個(gè) Pod 提供適當(dāng)?shù)馁Y源牺氨。它既可以縮小過(guò)度請(qǐng)求資源的容器设捐,也可以根據(jù)其使用情況隨時(shí)提升資源不足的容量酪呻。注意:VPA 不會(huì)改變 Pod 的資源限制值

vpa的優(yōu)點(diǎn):

使用VPA可以帶來(lái)以下好處:

  • 因?yàn)?Pod 完全用其所需界轩,所以集群節(jié)點(diǎn)使用效率高
  • Pod 會(huì)被安排到具有適當(dāng)可用資源的節(jié)點(diǎn)上
  • 不必運(yùn)行耗時(shí)的基準(zhǔn)測(cè)試任務(wù)來(lái)確定 CPU 和內(nèi)存請(qǐng)求的合適值画饥。
  • VPA 可以隨時(shí)調(diào)整 CPU 和內(nèi)存請(qǐng)求,而無(wú)需執(zhí)行任何操作浊猾,因此可以減少維護(hù)時(shí)間

vpa的缺點(diǎn):

  • pod資源的調(diào)整會(huì)導(dǎo)致pod重啟抖甘,可能還會(huì)調(diào)度到不同的節(jié)點(diǎn)上
  • pod默認(rèn)使用 metricServer,官方并沒(méi)有說(shuō)明如何使用custom metric server來(lái)提供指標(biāo)數(shù)據(jù)


vpa項(xiàng)目來(lái)源autoscaler下面的一個(gè)子項(xiàng)目葫慎,github地址為:https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler

1.1 原生vpa用法

和hpa一樣衔彻,vpa只需要?jiǎng)?chuàng)建deploy, 和 vpa對(duì)象即可。

(1) 創(chuàng)建deploy, 不用額外的指定幅疼。

可以通過(guò)vpaObservedContainers針對(duì)某一個(gè)容器的值進(jìn)行推薦

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zx-vpa-test
    project: test
    sym-apiversion: v3
    sym-app: zx-vpa
    sym-manager-injected: "true"
  name: zx-vpa
  namespace: test-test
spec:
  progressDeadlineSeconds: 600
  replicas: 2
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: zx-vpa-test
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:         
      creationTimestamp: null
      labels:
        app: zx-vpa-test
        project: test
        sym-apiversion: v3
        sym-app: zx-vpa
        sym-manager-injected: "true"
        uuid: 96402213-d9fa-4c97-8723-51ca0249d55b
      name: zx-vpa-test
    spec:
      containers:
      - command:
        - sleep
        - "36000"
        image: dockerhub.nie.netease.com/fanqihong/ubuntu:stress
        imagePullPolicy: IfNotPresent
        name: zx-vpa
        resources:
          limits:
            cpu: "1"
            memory: 131072k
          requests:
            cpu: "1"
            memory: 131072k
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      - command:
        - sleep
        - "36000"
        image: ncr.nie.netease.com/zouxiang/testcpu:v1
        imagePullPolicy: IfNotPresent
        name: zx-vpa2
        resources:
          limits:
            cpu: "2"
            memory: 200Mi
          requests:
            cpu: "2"
            memory: 200Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File

(2)創(chuàng)建vpa對(duì)象

apiVersion: "autoscaling.k8s.io/v1beta2"
kind: VerticalPodAutoscaler
metadata:
  name: hamster-vpa  
spec:
  targetRef:
    apiVersion: "apps/v1"       // 指定需要綁定的對(duì)象(上訴的deploy)
    kind: Deployment
    name: zx-vpa
  updatePolicy:
    updateMode: "Auto"          // 更新模式

VPA 有以下四種更新策略:

  • Initial:僅在 Pod 創(chuàng)建時(shí)修改資源請(qǐng)求,以后都不再修改昼接。
  • Auto:默認(rèn)策略爽篷,在 Pod 創(chuàng)建時(shí)修改資源請(qǐng)求,并且在 Pod 更新時(shí)也會(huì)修改慢睡。
  • Recreate:類似 Auto逐工,在 Pod 的創(chuàng)建和更新時(shí)都會(huì)修改資源請(qǐng)求铡溪,不同的是,只要Pod 中的請(qǐng)求值與新的推薦值不同泪喊,VPA 都會(huì)驅(qū)逐該 Pod棕硫,然后使用新的推薦值重新啟一個(gè)。因此袒啼,一般不使用該策略哈扮,而是使用 Auto,除非你真的需要保證請(qǐng)求值是最新的推薦值蚓再。
  • Off:不改變 Pod 的資源請(qǐng)求滑肉,不過(guò)仍然會(huì)在 VPA 中設(shè)置資源的推薦值。pod不會(huì)有任何變化摘仅,vpa對(duì)象的推薦值會(huì)一直變化

1.2 原生的vpa工作邏輯

原生的vpa架構(gòu)圖如下所示靶庙,一個(gè)常見(jiàn)的vpa處理邏輯如下:

(1)創(chuàng)建好1.1所示的deploy, vpa對(duì)象

(2)Recommender組件發(fā)現(xiàn)有vpa存在,就會(huì)去metrics server獲取所有vpa綁定pod的cpu, mem當(dāng)前使用值(1分鐘平均使用)娃属,然后結(jié)合歷史數(shù)據(jù)(vpa維護(hù)的一個(gè)crd對(duì)象)六荒,給出當(dāng)前vpa所有容器的推薦值。(會(huì)將當(dāng)前的cpu,mem值當(dāng)做歷史數(shù)據(jù)保持起來(lái))

(3)updater組件 負(fù)責(zé)監(jiān)聽(tīng)vpa資源變化矾端,一旦vpa有推薦值掏击。就會(huì)判斷當(dāng)前的推薦值是否需要 更新到 綁定的POD.

判斷邏輯比如:資源推薦值 和當(dāng)前POD正在使用的值是否差距過(guò)大,過(guò)大則需要更新须床,不大則忽略铐料。

updater更新的邏輯非常簡(jiǎn)單,就是直接將該pod驅(qū)逐

(4)admissoin controller組件 負(fù)責(zé)pod的重建,一旦發(fā)現(xiàn)有pod重建鹏浅,并且該pod受到vpa控制秕狰,修改pod的資源為vpa推薦值。

所以篓跛,依靠 recommenderupdater, admissoin controller 這三個(gè)組件坦刀,就實(shí)現(xiàn)了pod資源的更新愧沟。

image-20220708171459455.png

1.3 原生vpa存在的問(wèn)題

(1)監(jiān)控?cái)?shù)據(jù)的獲取問(wèn)題。原生的使用是metrics Sever, 無(wú)法自定義metric server

(2)pod資源更新需要重建

(3)vpa目前推薦值沒(méi)有上限和下限

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鲤遥,一起剝皮案震驚了整個(gè)濱河市沐寺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盖奈,老刑警劉巖混坞,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡究孕,警方通過(guò)查閱死者的電腦和手機(jī)啥酱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厨诸,“玉大人镶殷,你說(shuō)我怎么就攤上這事∥⒊辏” “怎么了绘趋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)得封。 經(jīng)常有香客問(wèn)我埋心,道長(zhǎng),這世上最難降的妖魔是什么忙上? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任拷呆,我火速辦了婚禮,結(jié)果婚禮上疫粥,老公的妹妹穿的比我還像新娘茬斧。我一直安慰自己,他們只是感情好梗逮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布项秉。 她就那樣靜靜地躺著,像睡著了一般慷彤。 火紅的嫁衣襯著肌膚如雪娄蔼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天底哗,我揣著相機(jī)與錄音岁诉,去河邊找鬼。 笑死跋选,一個(gè)胖子當(dāng)著我的面吹牛涕癣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播前标,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坠韩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了炼列?” 一聲冷哼從身側(cè)響起只搁,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俭尖,沒(méi)想到半個(gè)月后氢惋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年明肮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缭付。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柿估,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陷猫,到底是詐尸還是另有隱情秫舌,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布绣檬,位于F島的核電站足陨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏娇未。R本人自食惡果不足惜墨缘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望零抬。 院中可真熱鬧镊讼,春花似錦、人聲如沸平夜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忽妒。三九已至玩裙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間段直,已是汗流浹背吃溅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坷牛,地道東北人罕偎。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像京闰,于是被迫代替她去往敵國(guó)和親颜及。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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