Kubernetes HPA(水平Pod自動縮放)Pod水平自動伸縮,經過此功能,只需簡單的配置,便可即可以利用監控指標(cpu使用率、磁盤、內存等)自動的擴容或縮容服務中Pod數量,當業務需求增長時,系統將爲您無縫地自動增長適量容器,提升系統穩定性。此處將詳細講解HPA的核心設計原理和基於Hepaster的使用方法。php
系統應該可否獲取到當前Pod的資源使用狀況 (意思是能夠執行kubectl top pod命令,而且可以獲得反饋信息)。node
若要實現自動擴縮容的功能,還須要部署heapster服務,用來收集及統計資源的利用率,支持kubectl top命令,heapster服務集成在prometheus(普羅米修斯) MertricServer服務中,因此說,爲了方便,我這裏基於prometheus服務的環境上進行部署HPA(動態擴縮容)的服務。docker
主機 | IP地址 | 服務 |
---|---|---|
master | 192.168.1.21 | k8s |
node01 | 192.168.1.22 | k8s |
node02 | 192.168.1.23 | k8s |
基於[http://www.javashuo.com/article/p-armridbk-ep.html]() 的實驗繼續進行apache
這裏,咱們使用一個測試鏡像, 這個鏡像基於php-apache製做的docker鏡像,包含了一些能夠運行cpu密集計算任務的代碼。負載均衡
[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 //當deployment資源對象的CPU使用率達到50%時,就進行擴容,最多能夠擴容到10個
[root@master ~]# kubectl get hpa
新開啓多個終端,對pod進行死循環請求php-apache的podide
[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資源,發送ok
[root@master ~]# kubectl get hpa -w //實時查看pod的cpu狀態
能夠看到php-apache的cpu使用狀況已經超過了50%測試
[root@master images]# kubectl get pod -w //實時查看pod的狀態
至此,pod副本數量的自動擴縮容就實現了。google
能夠看到當php-apache的cpu使用狀況超過50%後,就會不斷生成新的php-apache來進行負載均衡(目前設置的上線時10個),固然,若是cpu使用狀況降低到50%,master就會陸續地刪除php-apache,這樣的使用能夠減小沒必要要的資源浪費、資源分配不均等狀況。設計