摘要:基于的概述,簡稱,是中實現(xiàn)水平自動伸縮的功能。它可以根據(jù)使用率或應(yīng)用自定義自動擴展數(shù)量支持和節(jié)點擴縮容層面,集群的持續(xù)監(jiān)控,一旦發(fā)現(xiàn)無法被,則基于進行擴展,即節(jié)點的自動擴縮容,具體內(nèi)容在后續(xù)文章中介紹。
基于Heapster的HPA 概述
Horizontal Pod Autoscaling,簡稱HPA,是Kubernetes中實現(xiàn)POD水平自動伸縮的功能。自動擴展主要分為兩種:
水平擴展(scale out),針對于實例數(shù)目的增減
垂直擴展(scal up),即單個實例可以使用的資源的增減, 比如增加cpu和增大內(nèi)存
HPA屬于前者。它可以根據(jù)CPU使用率或應(yīng)用自定義metrics自動擴展Pod數(shù)量(支持 replication controller、deployment 和 replica set)
節(jié)點擴縮容層面,k8s集群的Cluster Autoscaler持續(xù)監(jiān)控Pods,一旦發(fā)現(xiàn)Pods無法被schedule,則基于PodConditoin進行擴展,即node節(jié)點的自動擴縮容,具體內(nèi)容在后續(xù)文章中介紹。
監(jiān)控數(shù)據(jù)獲取Heapster: heapster收集Node節(jié)點上的cAdvisor數(shù)據(jù),并按照kubernetes的資源類型來集合資源。但是在v1.11中已經(jīng)被廢棄(heapster監(jiān)控數(shù)據(jù)可用,但HPA不再從heapster拿數(shù)據(jù))
metric-server: 在v1.8版本中引入,官方將其作為heapster的替代者。metric-server依賴于kube-aggregator,因此需要在apiserver中開啟相關(guān)參數(shù)。v1.11中HPA從metric-server獲取監(jiān)控數(shù)據(jù)
工作流程1.創(chuàng)建HPA資源,設(shè)定目標CPU使用率限額,以及最大、最小實例數(shù), 一定要設(shè)置Pod的資源限制參數(shù): request, 否則HPA不會工作。
2.控制管理器每隔30s(可以通過–horizontal-pod-autoscaler-sync-period修改)查詢metrics的資源使用情況
3.然后與創(chuàng)建時設(shè)定的值和指標做對比(平均值之和/限額),求出目標調(diào)整的實例個數(shù)
4.目標調(diào)整的實例數(shù)不能超過1中設(shè)定的最大、最小實例數(shù),如果沒有超過,則擴容;超過,則擴容至最大的實例個數(shù)
如何部署:1.6-1.8版本默認使用heapster
1.11版本及以上默認使用metric-server(需多帶帶安裝,并開啟參數(shù))
1.部署和運行php-apache并將其暴露成為服務(wù)
2.創(chuàng)建HPA
如果為1.8及以下的k8s集群,指標正常,如果為1.11集群,需要執(zhí)行如下操作。
4.向php-apache服務(wù)增加負載,驗證自動擴縮容
啟動一個容器,并通過一個循環(huán)向php-apache服務(wù)器發(fā)送無限的查詢請求(請在另一個終端中運行以下命令)
5.觀察HPA是否生效
用yaml創(chuàng)建HPA的方式為:
實現(xiàn)細節(jié)HPA由一個控制循環(huán)實現(xiàn),循環(huán)周期由--horizontal-pod-autoscaler-sync-period 標志指定,默認是30秒,每個周期內(nèi),controller-manager會查詢HPA中定義的metric的資源利用率。
如上例子,pod的request定義為200M,而HPA定義的target為50%,即HPA將通過增加或者減少Pod副本的數(shù)量(通過Deployment)以保持所有Pod的平均CPU利用率在50%以內(nèi)(即200*0.5=100M以內(nèi)),循環(huán)周期到達時,獲取pod的1分鐘內(nèi)的平均cpu利用率(從heaspter),發(fā)現(xiàn)超過了100M,為332M,于是通過下面的公式,決定最終的pod數(shù)量
TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / Target)
即 332/50 =6.xxx ceil為向上取整,得到7。如果得到的結(jié)果大于10,則為10
因為每次HPA生效都會創(chuàng)建或者刪除pod,而這些操作其實會影響到metric監(jiān)控值,如創(chuàng)建pod會暫時性的升高cpu,因此每次擴容都要間隔3分鐘,縮容需要間隔5分鐘。且需要滿足:avg(CurrentPodsConsumption)/ Target下降9%,進行縮容,增加至10%才進行擴容
這樣做好處是:
1、判斷的精度高,不會頻繁的擴縮pod,造成集群壓力大。
2、避免頻繁的擴縮pod,防止應(yīng)用訪問不穩(wěn)定
實現(xiàn)hpa的條件:
1、hpa不能autoscale daemonset類型control
2、要實現(xiàn)autoscale,pod必須設(shè)置request
參考:https://github.com/kubernetes...
本文為容器監(jiān)控實踐系列文章,完整內(nèi)容見:container-monitor-book
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/32830.html
摘要:基于的概述,簡稱,是中實現(xiàn)水平自動伸縮的功能。它可以根據(jù)使用率或應(yīng)用自定義自動擴展數(shù)量支持和節(jié)點擴縮容層面,集群的持續(xù)監(jiān)控,一旦發(fā)現(xiàn)無法被,則基于進行擴展,即節(jié)點的自動擴縮容,具體內(nèi)容在后續(xù)文章中介紹。 基于Heapster的HPA 概述 Horizontal Pod Autoscaling,簡稱HPA,是Kubernetes中實現(xiàn)POD水平自動伸縮的功能。自動擴展主要分為兩種: 水...
摘要:還可以把數(shù)據(jù)導(dǎo)入到第三方工具展示或使用場景共同組成了一個流行的監(jiān)控解決方案原生的監(jiān)控圖表信息來自在中也用到了,將作為,向其獲取,作為水平擴縮容的監(jiān)控依據(jù)監(jiān)控指標流程首先從獲取集群中所有的信息。 概述 該項目將被廢棄(RETIRED) Heapster是Kubernetes旗下的一個項目,Heapster是一個收集者,并不是采集 1.Heapster可以收集Node節(jié)點上的cAdvis...
摘要:還可以把數(shù)據(jù)導(dǎo)入到第三方工具展示或使用場景共同組成了一個流行的監(jiān)控解決方案原生的監(jiān)控圖表信息來自在中也用到了,將作為,向其獲取,作為水平擴縮容的監(jiān)控依據(jù)監(jiān)控指標流程首先從獲取集群中所有的信息。 概述 該項目將被廢棄(RETIRED) Heapster是Kubernetes旗下的一個項目,Heapster是一個收集者,并不是采集 1.Heapster可以收集Node節(jié)點上的cAdvis...
摘要:出現(xiàn)后,新的監(jiān)控架構(gòu)將變成上圖的樣子核心流程黑色部分這是正常工作所需要的核心度量,從等獲取度量數(shù)據(jù),再由提供給控制器等使用。本文為容器監(jiān)控實踐系列文章,完整內(nèi)容見 概述 從 v1.8 開始,資源使用情況的監(jiān)控可以通過 Metrics API的形式獲取,具體的組件為Metrics Server,用來替換之前的heapster,heapster從1.11開始逐漸被廢棄。 Metrics-S...
摘要:出現(xiàn)后,新的監(jiān)控架構(gòu)將變成上圖的樣子核心流程黑色部分這是正常工作所需要的核心度量,從等獲取度量數(shù)據(jù),再由提供給控制器等使用。本文為容器監(jiān)控實踐系列文章,完整內(nèi)容見 概述 從 v1.8 開始,資源使用情況的監(jiān)控可以通過 Metrics API的形式獲取,具體的組件為Metrics Server,用來替換之前的heapster,heapster從1.11開始逐漸被廢棄。 Metrics-S...
閱讀 1256·2023-04-26 02:38
閱讀 943·2023-04-25 20:13
閱讀 3597·2021-11-19 11:31
閱讀 2403·2019-08-30 15:55
閱讀 2730·2019-08-30 14:11
閱讀 3166·2019-08-30 13:45
閱讀 1382·2019-08-29 18:41
閱讀 1155·2019-08-29 16:18