一、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就部署完成了,后面有什么问题你们能够私信我哈