一、HPA是kubernetes裏面pod彈性伸縮的實現,它能根據設置的監控閥值進行pod的彈性擴縮容,目前默認HPA只能支持cpu和內存的閥值檢測擴縮容。
但hpa不能用於伸縮一些沒法進行縮放的控制器如DaemonSet
二、也能夠經過custom metric api 調用prometheus實現自定義metric 來更加靈活的監控指標實現彈性伸縮node
這裏HPA部署須要Metrics-server服務,沒有這個HPA是沒法獲取pod的資源使用狀況,因此部署HPA的時候前提要先部署Metrics-servernginx
早期kubernetes版本是使用hepster,在1.10後面版本更推薦使用metric-server
推薦使用metric-servergit
重點:github
實現hpa的條件:
1\hpa不能autoscale daemonset類型control
2\要實現autoscale,pod必須設置requestweb
開始部署:vim
我這裏吧文件都放到百度網盤了,能夠直接使用不用修改,都修改好了,直接啓動便可api
連接:https://pan.baidu.com/s/1D5yoH6GZO3C0a9PZLK8oUw
提取碼:27s1app
kubeadm方式
將metric-server從github拉取下來ide
git clone git@github.com:kubernetes-incubator/metrics-server.git
或者手動下載到本地再上傳到主機
https://github.com/kubernetes-incubator/metrics-server測試
這裏使用for循環下載
for file in auth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml ; do wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/metrics-server/$file;done
一共6個文件
這裏須要修改2個文件
修改 vim metrics-server-deployment.yaml
這些都須要修改
修改 vim resource-reader.yaml
配置完這些而後開始建立
kubectl apply -f .
建立完成看一下
這說明metrics-server部署完成了
接下來開始部署HPA
建立一個deployment的yaml
[root@k8s-master hpa]# cat autuscalertest.yaml
apiVersion: v1
kind: Service
metadata:
name: autuscalertest
labels:
app: autuscalertest
spec:
type: NodePort
ports:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: autuscalertest
spec:
replicas: 2
template:
metadata:
labels:
app: autuscalertest
annotations:
prometheus.io/scrape: 'true'
spec:
containers:
必須有這個requests參數
完成以後直接 kubectl create -f autuscalertest.yaml
這裏的副本數量是2個哈
完成以後
在建立HPA的yaml
指定pod的cpu和內存使用到的閥值
以及最小容器個數2個,最大爲10個
建立
kubectl create -f HorizontalPodAutoscaler.yaml
接下來測試一下
webbench進行壓力測試
編譯安裝
wget http://www.ha97.com/code/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make
make install
查看一下效果哈
說明我們的HPA是生效了,,等待壓測完事以後,過段時間這10個容器會縮減到2個副本數量這裏注意哈,不會立馬縮減到2個,須要一段時間的
好了hpa就部署完成了,後面有什麼問題你們能夠私信我哈