溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Kubernetes HPA Controller的工作原理

發(fā)布時(shí)間:2021-08-17 14:39:39 來(lái)源:億速云 閱讀:201 作者:chen 欄目:云計(jì)算

本篇內(nèi)容介紹了“Kubernetes HPA Controller的工作原理”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

HPA Controller 工作原理

  • K8s通過(guò)HPA,基于獲取到的metrics(CPU utilization, custom metrics) value,對(duì)rc, deployment管理的pods進(jìn)行自動(dòng)伸縮。

截止到Kubernetes 1.6,Release特性中僅支持CPU utilization這一resource metrics,對(duì)custom metrics的支持目前仍在alpha階段,請(qǐng)知曉。

  • HPA Controller周期性(默認(rèn)每30s一次,可通過(guò)kube-controller-manager的flag--horizontal-pod-autoscaler-sync-period進(jìn)行設(shè)置)的調(diào)整對(duì)應(yīng)的rc, deployment中的replicas數(shù)量,使得指定的metrics value能匹配用戶(hù)指定的target utilization value。

  • 在每個(gè)HPA Controller的處理周期中,kube-controller-manager都去查詢(xún)HPA中定義的metrics的utilization。查詢(xún)方式根據(jù)metric類(lèi)型不同而不同:

    • 如果metric type是resource metrics,則通過(guò)resource metrics API查詢(xún)。

    • 如果metric type屬于custom metrics,則通過(guò)custom metrics API查詢(xún)。

  • 計(jì)算伸縮比例算法:

    • 對(duì)于resource metrics,比如CPU,HPA Controller獲取HPA中指定的metrics,如果HPA中設(shè)定了target utilization,則HPA Controller會(huì)將獲取到的metrics除于對(duì)應(yīng)的容器的resource request值作為監(jiān)測(cè)到的當(dāng)前pod的resource utilization。如此計(jì)算完所有HPA對(duì)應(yīng)的pods后,對(duì)該resource utilization values取平均值。最后將平均值除于定義的target utilization,得到伸縮的比例。

      注意:如果HPA對(duì)應(yīng)的某些pods中的容器沒(méi)有定義對(duì)應(yīng)的resource request,則HPA不會(huì)對(duì)這些pods進(jìn)行scale。

    • 對(duì)于custome metrics,HPA Controller的伸縮算法幾乎與resource metrics一樣,不同的是:此時(shí)是根據(jù)custome metrics API查詢(xún)到的metrics value對(duì)比target metics value計(jì)算得到的,而不是通過(guò)utilization計(jì)算得到的。

  • HPA與rc, deployment, pod的關(guān)系如下圖所示。

    • HPA通過(guò)Scale sub-resource接口,對(duì)RC和Deployment的replicas進(jìn)行控制。

    • HPA最終對(duì)Pod副本數(shù)的控制終歸還是通過(guò)RC和Deployment控制器。

Kubernetes HPA Controller的工作原理

HPA Controller有兩種方式獲取metrics:

  • direct Heapster access: 用于對(duì)resource metrics的監(jiān)控,需要提前在kube-system namespace中部署Heapster。

  • REST client access: 用于對(duì)custom metrics的監(jiān)控,需要設(shè)置kube-controller-manager的--horizontal-pod-autoscaler-use-rest-clients flag為true。

“Kubernetes HPA Controller的工作原理”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI