在实际的业务中,我们很多时候会遇到一些瞬时并发,也就是某个服务在某一刻有大量的服务访问,此时服务器对应的cpu和内存使用量会几句暴涨,因此这里的话,如果是传统的部署,那么我们就需要添加服务器,并且人工干预对应的扩容措施。在kubernetes中有一个自动伸缩的功能。
我们使用这个功能的话,可以设置我们的规则,如果达到规则则自动扩容,如果长时间不满足规则,则自动缩容。能全程做到无人值守,并且能应对瞬时并发。下面我们来演示一下:
1)编辑pod,限制cpu和内存
这里我们编辑下shop-user这个pod信息,把资源限制下,最大的cpu为0.5,最大内存是512m,示例图如下:
编辑完成后,我们点击保存。
2)配置自动伸缩
这里我们点击这里的自动伸缩按钮
然后我们点击启动自动伸缩
然后我们把规则配置下,这里主要的配置信息有:
最小副本数 最大副本数 目标CPU利用率
然后我们填写最小副本数为1,最大副本数为3,目标CPU利用率是80%,然后点击保存
此时我们就开启了自动伸缩。这时候由于服务没什么人用,因此这里的话只会有1个实例在运行
3)模拟并发测试
这时候我们使用apipost模拟下并发测试,设置100个并发数,持续时间是200秒,配置信息如下:
然后我们点击开始压测
然后我们观察kuboard界面
可以看到已经开始自动扩容了
然后又扩容到了第三个
此时我们的并发测试还在继续:
然后我们停止掉这个并发测试,然后观察kuboard界面,大概过5分钟左右可以看到pod长时间不满足自动伸缩的规则,因此进行了缩容,正在删除多余的pod:
等待缩容之后,可以看到只有一个pod在运行了:
以上就是kubernetes的自动伸缩功能,是不是用起来很方便。
备注:
1、使用自动伸缩功能之前,切记配置好负载均衡的策略,避免伸缩后没有负载均衡,导致新启动的pod无用。
还没有评论,来说两句吧...