什么是 HPA?
- Pod 水平自動(dòng)擴(kuò)縮(Horizontal Pod Autoscaler) 可以基于 CPU 利用率自動(dòng)擴(kuò)縮 ReplicationController蜕衡、Deployment 和 ReplicaSet 中的 Pod 數(shù)量。 除了 CPU 利用率口糕,也可以基于其他應(yīng)程序提供的自定義度量指標(biāo) 來執(zhí)行自動(dòng)擴(kuò)縮譬胎。 Pod 自動(dòng)擴(kuò)縮不適用于無法擴(kuò)縮的對(duì)象,比如 DaemonSet爬立〖鼗#「VPA 可以默認(rèn)放棄,如果還有對(duì)外服務(wù)如果只能垂直升侠驯,那寫的都是啥抡秆?」
Horizontal Pod Autoscaler
實(shí)現(xiàn)原理
- Pod 由控制器
kube-controller-manager
周期性的進(jìn)行管理,每個(gè)周期按照HorizontalPodAutoscaler
給到的指標(biāo)確認(rèn)利用率/度量值后與設(shè)置好的target對(duì)比后吟策,將會(huì)進(jìn)行資源利用率/原始數(shù)計(jì)算后給到擴(kuò)容比例-
--horizontal-pod-autoscaler-sync-period
: 默認(rèn) 30s HPA 審核應(yīng)用使用資源情況或自定義指標(biāo)的頻率 -
--horizontal-pod-autoscaler-downscale-delay
: 默認(rèn) 5m0s 縮容操作完成后儒士,HPA 必須等待多長時(shí)間才能進(jìn)行另外一次縮容操作 -
--horizontal-pod-autoscaler-upscale-delay
: 默認(rèn) 3m0s 擴(kuò)容操作完成后,HPA 必須等待多長時(shí)間才能進(jìn)行另外一次擴(kuò)容操作
-
-
需要注意如果是自定義度量值的話就是純數(shù)字的對(duì)比了檩坚,不是百分比了着撩。
期望副本數(shù) = ceil[(當(dāng)前指標(biāo) / 期望指標(biāo)) * 當(dāng)前副本數(shù)] - TargetUtilization 和 Target 的為目標(biāo)利用率和目標(biāo)利用值(平均值或總量值)
- 設(shè)置 Cpu 利用率為 40% 假設(shè)存在一個(gè)叫 A 的 Deployment,包含 3 個(gè) Pod匾委,每個(gè)副本的 Request 值是 1 核拖叙,當(dāng)前獲取的每個(gè) Pod 的 Cpu 使用值為 0.5,0.8赂乐,0.7薯鳍,則當(dāng)前 Pod 的總 Cpu 利用率 x=(0.5+0.7+0.8)/(3 * 1)=66.7%;根據(jù)上面公式 targetPods=(66.7%)/(40%)*3=5
- 以網(wǎng)絡(luò)接收字節(jié)數(shù) Receive_bytes_total 為指標(biāo)計(jì)算, 目標(biāo)平均值 targetAverageValue 為 100挨措,假設(shè)存在一個(gè)叫 A 的 Deployment辐啄,包含 3個(gè) Pod,當(dāng)前獲取的每個(gè) Pod 的 Receive_bytes_total 使用值為120运嗜,150壶辜,20,則當(dāng)前 Pod 的 Receive_bytes_total 總平均使用值 x = (130+150+200)/3 = 160担租,根據(jù)上面公式 TargetPods = (160/100)*3 = 5
- Package podautoscaler
- podautoscaler > replica_calculator.go 「整不明白先看 replica_calculator_test.go」
- 核心方法
流程
優(yōu)雅使用
- AliyunContainerService/kubernetes-cronhpa-controller: 一款面向 Pod 水平定時(shí)伸縮場景的 CRD Controller砸民,很好的解決了 HPA 啟動(dòng) Pod 需要時(shí)間的問題
- Custom Metrics: 自定義指標(biāo)場景
價(jià)值
- 成本:配合 Cluster Autoscaling + CronHpa/Custom Hpa 「我廠已有大佬實(shí)現(xiàn),麻煩收下膝蓋7芫取A氩巍!」尝艘,可以非常好的控制成本演侯,老省錢了「降本提效」
- 穩(wěn)定性:發(fā)揮監(jiān)控?cái)?shù)據(jù)的價(jià)值提前自動(dòng)化的擴(kuò)容好服務(wù) 「好美 好美」
- 效率:無研發(fā)介入、無 infra 介入背亥,全自動(dòng)「真香」