一、准备工作:

  1. 部署好的K8S集群(可参考1.15版本部署文档
  2. metrics server已安装完毕(可参考metrics server部署文档

二、开始部署

  1. 使用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
  1. 部署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达到最大值
在这里插入图片描述
kub

此时停止webbench服务,然后查看服务器资源使用情况,资源会被慢慢释放,需要在停止服务后等待一会

在这里插入图片描述
pods也不会立马变成最小值,需要有个调节的过程在这里插入图片描述
等待一会再次查看,会发现pods的数量在变少,至最后,恢复满足配置要求的最小数量
在这里插入图片描述
在这里插入图片描述

参考:https://blog.51cto.com/xiaorenwutest/2480053

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐