您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)k8s的HPA是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Kubernetes HPA(水平Pod自動縮放)Pod水平自動伸縮,通過此功能,只需簡單的配置,即可便可以利用監(jiān)控指標(biāo)(cpu使用率、磁盤、內(nèi)存等)自動的擴容或縮容服務(wù)中Pod數(shù)量,當(dāng)業(yè)務(wù)需求增加時,系統(tǒng)將為您無縫地自動增加適量容器,提高系統(tǒng)穩(wěn)定性。此處將詳細講解HPA的核心設(shè)計原理和基于Hepaster的使用方法。
系統(tǒng)應(yīng)該能否獲取到當(dāng)前Pod的資源使用情況 (意思是可以執(zhí)行kubectl top pod命令,并且能夠得到反饋信息)。
若要實現(xiàn)自動擴縮容的功能,還需要部署heapster服務(wù),用來收集及統(tǒng)計資源的利用率,支持kubectl top命令,heapster服務(wù)集成在prometheus(普羅米修斯) MertricServer服務(wù)中,所以說,為了方便,我這里基于prometheus服務(wù)的環(huán)境上進行部署HPA(動態(tài)擴縮容)的服務(wù)。
主機 | IP地址 | 服務(wù) |
---|---|---|
master | 192.168.1.21 | k8s |
node01 | 192.168.1.22 | k8s |
node02 | 192.168.1.23 | k8s |
基于[https://blog.51cto.com/14320361/2473879]() 的實驗繼續(xù)進行
heapster:這個組件之前是集成在k8s集群的,不過在1.12版本之后被移除了。如果還想使用此功能,應(yīng)該部署metricServer, 這個k8s集群資源使用情況的聚合器。
Cousom:同樣處于beta階段(autoscaling/v2beta1),但是涉及到自定義的REST API的開發(fā),復(fù)雜度會大一些,并且當(dāng)需要從自定義的監(jiān)控中獲取數(shù)據(jù)時,只能設(shè)置絕對值,無法設(shè)置使用率。
水平擴展(scale out),針對于實例數(shù)目的增減。
垂直擴展(scal up),即單個實例可以使用的資源的增減, 比如增加cpu和增大內(nèi)存。
HPA屬于前者。它可以根據(jù)CPU使用率或應(yīng)用自定義metrics自動擴展Pod數(shù)量(支持 replication controller、deployment 和 replica set)。
創(chuàng)建HPA資源,設(shè)定目標(biāo)CPU使用率限額,以及最大/最小實例數(shù),一定要設(shè)置Pod的資源限制參數(shù): request,否則HPA不會工作。
控制管理器每隔30s(在kube-controller-manager.service中可以通過–-horizontal-pod-autoscaler-sync-period修改)查詢metrics的資源使用情況。
然后與創(chuàng)建時設(shè)定的值和指標(biāo)做對比(平均值之和/限額),求出目標(biāo)調(diào)整的實例個數(shù)。
目標(biāo)調(diào)整的實例數(shù)不能超過第一條中設(shè)定的最大/最小實例數(shù)。如果沒有超過,則擴容;超過,則擴容至最大的實例個數(shù)。
重復(fù)第2-4步。
這里,我們使用一個測試鏡像, 這個鏡像基于php-apache制作的docker鏡像,包含了一些可以運行cpu密集計算任務(wù)的代碼。
[root@master ~]#docker pull mirrorgooglecontainers/hpa-example:latest //下載hpa-example鏡像 [root@master ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80 //基于hpa-example鏡像,運行一個deployment控制器,請求CPU的資源為200m,暴露一個80端口
[root@master ~]# kubectl get deployments.
[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 //當(dāng)deployment資源對象的CPU使用率達到50%時,就進行擴容,最多可以擴容到10個
[root@master ~]# kubectl get hpa
新開啟多個終端,對pod進行死循環(huán)請求php-apache的pod
[root@master ~]# kubectl run -i --tty load-generator --image=busybox /bin/sh
[root@master ~]# while true; do wget -q -O- http://php-apache.default.svc.cluster.local ; done //不停地向php-apache的svc資源,發(fā)送ok
[root@master ~]# kubectl get hpa -w //實時查看pod的cpu狀態(tài)
可以看到php-apache的cpu使用情況已經(jīng)超過了50%
[root@master images]# kubectl get pod -w //實時查看pod的狀態(tài)
關(guān)于“k8s的HPA是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。