HPA示例
一、准备工作:部署好的K8S集群(可参考1.15版本部署文档)metrics server已安装完毕(可参考metrics server部署文档)二、开始部署使用autuscalertest.yaml文件部署一个nginx服务来验证自动伸缩服务apiVersion: v1kind: Servicemetadata:name: autuscalertestlabels:app: autuscaler
一、准备工作:
- 部署好的K8S集群(可参考1.15版本部署文档)
- metrics server已安装完毕(可参考metrics server部署文档)
二、开始部署
- 使用autuscalertest.yaml文件部署一个nginx服务来验证自动伸缩服务
apiVersion: v1
kind: Service
metadata:
name: autuscalertest
labels:
app: autuscalertest
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30110 #服务端口为30110
protocol: TCP
selector:
app: autuscalertest
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: autuscalertest
spec:
replicas: 2
template:
metadata:
labels:
app: autuscalertest
annotations:
prometheus.io/scrape: 'true'
spec:
containers:
- name: podinfod
image: nginx
imagePullPolicy: Never
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
memory: "32Mi"
cpu: "1m"
limits:
memory: "256Mi"
cpu: "100m"
requests参数指定pod运行的资源要求,必须要有,否则在弹性收缩时会存在异常
yaml文件指定的副本数为 2
编辑完成后启动pods
kubectl apply -f autuscalertest.yaml
- 部署HPA服务
创建HPA服务的yaml文件,hpa.yaml
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: autuscalertest #与要监控的服务name保持一致
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: autuscalertest
minReplicas: 2 #设定最小为2个副本
maxReplicas: 10 #设定最多为10个副本
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 50 #cpu使用率超过50%就增加pod
- type: Resource
resource:
name: memory
targetAverageUtilization: 50 #内存使用率超过50%就增加pod
注意:name需要对应上,相当于创建一个监控autuscalertest的服务,监控autuscalertest服务的情况,并根据cpu和内存的情况实现自动伸缩
随后启动HPA服务
kubectl apply -f hpa.yaml
启动后可以查看服务监听情况
kubectl get hpa
可以看到当前副本数是2,最小为2个,最大为10个,当前的pod的cpu及内存使用情况
三、对服务施压,查看hpa服务是否正常
PS:在非NODE机器上执行该压测
1.使用工具:webbench,一款轻量级网站测压工具
2.安装软件:
ps:本文执行路径:/root
wget wget http://www.ha97.com/code/webbench-1.5.tar.gz
tar xvf webbench-1.5.tar.gz
cd /root/webbench-1.5
yum install gcc* ctags* -y
make && make install
安装可能出现报错:install: 无法创建普通文件"/usr/local/man/man1": 没有那个文件或目录
手动创建一下这个目录
mkdir -p /usr/local/man/man1
再执行make install 即可
3.执行压测
ps:我的node机器,其中一台的ip为:172.16.26.94
webbench -c 600 -t 600 http://172.16.26.94:30110 #起服务时指定的是30110端口
解释: -c 参数表示并发数
-t 参数表示持续时间
4.查看pods情况
kubectl get hpa
因为只对一台node施压,可以看到一台资源使用没有明显变化,另一台资源明显上升
pods数量慢慢会增加,过一会再次查看pods情况,可以看到REPLICAS达到最大值
此时停止webbench服务,然后查看服务器资源使用情况,资源会被慢慢释放,需要在停止服务后等待一会
pods也不会立马变成最小值,需要有个调节的过程
等待一会再次查看,会发现pods的数量在变少,至最后,恢复满足配置要求的最小数量
参考:https://blog.51cto.com/xiaorenwutest/2480053
更多推荐
所有评论(0)