Kubernetes集群水平擴(kuò)展——HPA(自動伸縮)-創(chuàng)新互聯(lián)

Kubernetes集群可以通過Replication Controller的scale機(jī)制完成服務(wù)的擴(kuò)容或縮容,實現(xiàn)具有伸縮性的服務(wù)。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,貴德網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:貴德等地區(qū)。貴德做網(wǎng)站價格咨詢:028-86922220

Kubernetes集群自動伸縮分為:

  • sacle手動伸縮:可參考K8s資源對象的基本管理之使用命令行的方式(升級、回滾、擴(kuò)容、縮容);
  • autoscale自動伸縮:也就是本篇博文所介紹的HPA;

Kubernetes自動擴(kuò)展主要分為:

  • 水平擴(kuò)展:針對實例數(shù)目的增減;
  • 垂直擴(kuò)展:也就是單個實例就可以使用的資源的增減,比如增加CPU、內(nèi)存;

一、HPA簡介

HPA的全稱為(Horizontal Pod Autoscaling)它可以根據(jù)當(dāng)前pod資源的使用率(如CPU、磁盤、內(nèi)存等),進(jìn)行副本數(shù)的動態(tài)的擴(kuò)容與縮容,以便減輕各個pod的壓力。當(dāng)pod負(fù)載達(dá)到一定的閾值后,會根據(jù)擴(kuò)縮容的策略生成更多新的pod來分擔(dān)壓力,當(dāng)pod的使用比較空閑時,在穩(wěn)定空閑一段時間后,還會自動減少pod的副本數(shù)量。

若要實現(xiàn)自動擴(kuò)縮容的功能,還需要部署heapster服務(wù),用來收集及統(tǒng)計資源的利用率,支持kubectl top命令,heapster服務(wù)集成在prometheus(普羅米修斯) MertricServer服務(wù)中,所以說,為了方便,我這里基于prometheus服務(wù)的環(huán)境上進(jìn)行部署HPA(動態(tài)擴(kuò)縮容)的服務(wù)。

可以參考博文Kubernetes的三種可視化UI界面中的第三個部署Prometheus服務(wù),來運行prometheus服務(wù),如果不想部署prometheus,那么可以參考github上來單獨部署heapster服務(wù)。

說這么多,總之就是想要使用HPA,就必須保證,可以在master節(jié)點上執(zhí)行如下命令:

[root@master ~]# kubectl top node      #查看節(jié)點的資源使用情況
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   1317m        65%    1383Mi          80%       
node01   1237m        61%    1082Mi          62%       
node02   1146m        57%    1045Mi          60%   

二、實現(xiàn)pod自動擴(kuò)容與縮容

1)生成HPA控制器

[root@master ~]#  kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80
#運行hpa資源,名稱為php-apache,并設(shè)置請求CPU的資源為200m并暴露一個80端口
[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
#當(dāng)hpa資源的deployment資源對象的CPU使用率達(dá)到50%時,就進(jìn)行擴(kuò)容,最多可以擴(kuò)容到10個
[root@master ~]# kubectl get svc | grep php-apache    #查看php-apache對應(yīng)的svc群集IP
php-apache   ClusterIP   10.97.45.108   <none>        80/TCP    44m
[root@master ~]#  kubectl get pod | grep php-apa    #確定當(dāng)前的pod正常運行
php-apache-867f97c8cb-9mpd6   1/1     Running   0          44m

2)模擬消耗php-apache的資源,并驗證pod是否會自動擴(kuò)容與縮容

新開啟多個終端(也可使用node節(jié)點),對php-apache的pod進(jìn)行死循環(huán)請求,如下(如果你的系統(tǒng)資源比較充足,可以選擇開啟多個終端,對pod進(jìn)行死循環(huán)請求,我這里開啟了兩個node的終端,同時請求php-apache的pod):

[root@node01 ~]# while true; do wget -q -O- 10.97.45.108; done              #一直返回ok屬于正常現(xiàn)象
#模擬多用戶對php-apache的pod造成的并發(fā)請求
[root@master ~]# kubectl get  hpa   #查看hpa資源對cpu的占用情況
#也可使用“-w”選項對CPU資源占用情況實時監(jiān)控
NAME         REFERENCE               TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   416%/50%   1         10        10         56m
[root@master ~]#  kubectl get pod
#在運行死循環(huán)請求一段時間后,查看pod數(shù)量,當(dāng)然使用-w選項對pod的變化進(jìn)行實時的監(jiān)控
NAME                          READY   STATUS    RESTARTS   AGE
php-apache-867f97c8cb-6jsjq   1/1     Running   0          4m9s
php-apache-867f97c8cb-7xd5x   1/1     Running   0          51s
php-apache-867f97c8cb-9mpd6   1/1     Running   0          56m
php-apache-867f97c8cb-dhng7   1/1     Running   0          3m8s
php-apache-867f97c8cb-qc9hr   1/1     Running   0          2m22s
php-apache-867f97c8cb-rj494   1/1     Running   0          3m38s
php-apache-867f97c8cb-sbn9n   1/1     Running   0          3m38s
php-apache-867f97c8cb-vzfbg   1/1     Running   0          4m9s
php-apache-867f97c8cb-vzfbg   1/1     Running   0          5m19s
php-apache-867f97c8cb-vzfbg   1/1     Running   0          3m39s
#當(dāng)然大也就只可以產(chǎn)生10個pod,因為我們之前規(guī)定最多產(chǎn)生10個pod

當(dāng)停止死循環(huán)請求后,也并不會立即減少pod數(shù)量,會等一段時間后減少pod數(shù)量,防止流量再次激增。

至此,HPA實現(xiàn)pod副本數(shù)量的自動擴(kuò)容與縮容就實現(xiàn)了。

———————— 本文至此結(jié)束,感謝閱讀 ————————

當(dāng)前名稱:Kubernetes集群水平擴(kuò)展——HPA(自動伸縮)-創(chuàng)新互聯(lián)
地址分享:http://muchs.cn/article28/dhgccp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈定制網(wǎng)站、網(wǎng)站排名外貿(mào)建站、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司