Kubernetes集群可以通過(guò)Replication Controller的scale機(jī)制完成服務(wù)的擴(kuò)容或縮容,實(shí)現(xiàn)具有伸縮性的服務(wù)。
Kubernetes集群自動(dòng)伸縮分為:
- sacle手動(dòng)伸縮:可參考K8s資源對(duì)象的基本管理之使用命令行的方式(升級(jí)、回滾、擴(kuò)容、縮容);
- autoscale自動(dòng)伸縮:也就是本篇博文所介紹的HPA;
Kubernetes自動(dòng)擴(kuò)展主要分為:
- 水平擴(kuò)展:針對(duì)實(shí)例數(shù)目的增減;
- 垂直擴(kuò)展:也就是單個(gè)實(shí)例就可以使用的資源的增減,比如增加CPU、內(nèi)存;
HPA的全稱(chēng)為(Horizontal Pod Autoscaling)它可以根據(jù)當(dāng)前pod資源的使用率(如CPU、磁盤(pán)、內(nèi)存等),進(jìn)行副本數(shù)的動(dòng)態(tài)的擴(kuò)容與縮容,以便減輕各個(gè)pod的壓力。當(dāng)pod負(fù)載達(dá)到一定的閾值后,會(huì)根據(jù)擴(kuò)縮容的策略生成更多新的pod來(lái)分擔(dān)壓力,當(dāng)pod的使用比較空閑時(shí),在穩(wěn)定空閑一段時(shí)間后,還會(huì)自動(dòng)減少pod的副本數(shù)量。
若要實(shí)現(xiàn)自動(dòng)擴(kuò)縮容的功能,還需要部署heapster服務(wù),用來(lái)收集及統(tǒng)計(jì)資源的利用率,支持kubectl top命令,heapster服務(wù)集成在prometheus(普羅米修斯) MertricServer服務(wù)中,所以說(shuō),為了方便,我這里基于prometheus服務(wù)的環(huán)境上進(jìn)行部署HPA(動(dòng)態(tài)擴(kuò)縮容)的服務(wù)。
可以參考博文Kubernetes的三種可視化UI界面中的第三個(gè)部署Prometheus服務(wù),來(lái)運(yùn)行prometheus服務(wù),如果不想部署prometheus,那么可以參考github上來(lái)單獨(dú)部署heapster服務(wù)。
說(shuō)這么多,總之就是想要使用HPA,就必須保證,可以在master節(jié)點(diǎn)上執(zhí)行如下命令:
[root@master ~]# kubectl top node #查看節(jié)點(diǎn)的資源使用情況
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 1317m 65% 1383Mi 80%
node01 1237m 61% 1082Mi 62%
node02 1146m 57% 1045Mi 60%
[root@master ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80
#運(yùn)行hpa資源,名稱(chēng)為php-apache,并設(shè)置請(qǐng)求CPU的資源為200m并暴露一個(gè)80端口
[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
#當(dāng)hpa資源的deployment資源對(duì)象的CPU使用率達(dá)到50%時(shí),就進(jìn)行擴(kuò)容,最多可以擴(kuò)容到10個(gè)
[root@master ~]# kubectl get svc | grep php-apache #查看php-apache對(duì)應(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正常運(yùn)行
php-apache-867f97c8cb-9mpd6 1/1 Running 0 44m
新開(kāi)啟多個(gè)終端(也可使用node節(jié)點(diǎn)),對(duì)php-apache的pod進(jìn)行死循環(huán)請(qǐng)求,如下(如果你的系統(tǒng)資源比較充足,可以選擇開(kāi)啟多個(gè)終端,對(duì)pod進(jìn)行死循環(huán)請(qǐng)求,我這里開(kāi)啟了兩個(gè)node的終端,同時(shí)請(qǐng)求php-apache的pod):
[root@node01 ~]# while true; do wget -q -O- 10.97.45.108; done #一直返回ok屬于正?,F(xiàn)象
#模擬多用戶對(duì)php-apache的pod造成的并發(fā)請(qǐng)求
[root@master ~]# kubectl get hpa #查看hpa資源對(duì)cpu的占用情況
#也可使用“-w”選項(xiàng)對(duì)CPU資源占用情況實(shí)時(shí)監(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
#在運(yùn)行死循環(huán)請(qǐng)求一段時(shí)間后,查看pod數(shù)量,當(dāng)然使用-w選項(xiàng)對(duì)pod的變化進(jìn)行實(shí)時(shí)的監(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個(gè)pod,因?yàn)槲覀冎耙?guī)定最多產(chǎn)生10個(gè)pod
當(dāng)停止死循環(huán)請(qǐng)求后,也并不會(huì)立即減少pod數(shù)量,會(huì)等一段時(shí)間后減少pod數(shù)量,防止流量再次激增。
至此,HPA實(shí)現(xiàn)pod副本數(shù)量的自動(dòng)擴(kuò)容與縮容就實(shí)現(xiàn)了。
———————— 本文至此結(jié)束,感謝閱讀 ————————
當(dāng)前名稱(chēng):Kubernetes集群水平擴(kuò)展——HPA(自動(dòng)伸縮)-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article28/dhgccp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容