xiunai 2020-01-10
对于Pod的高可用性我们可以使用AKS的deployment控制器来确保Pod可以持续对外提供服务,但是对于面临大量用户访问时,我们就需要扩展我们的资源来满足业务需求。
前面的文章中给大家介绍了手动扩展pod来满足业务的扩展需求,但是相信大家都已经意识到了如果我们人工监控pods,人工进行调整副本那么这个工作量无疑是巨大的,但kubernetes已经有了相应的机制来应对了。这就是我们今天要为大家介绍的水平自动扩充POD(HPA)
HPA全称Horizontal Pod Autoscaler控制器工作流程
HPA的工作流程如下:
说了这么多,下面我们来看下如何配置HPA:
在配置HPA之前,我们需要先了解Node节点的配置情况
检查与配置resource limit
使用kubectl get nodes命令检查node信息(node名称)
使用命令 kubectl describe nodes NODE_NAME 确认 Node 资源配置的状态, 因为我们之前没有配置Resource quata,因此我们需要先设定好 Resource 限制:
打开我们之前创建的yaml文件,修改 Resources 配置, 其中 CPU 配置 Container 只使用 1 个 CPU 单元, Request 限制使用 0.5 个 CPU 单元:
修改完成以后使用kubectl apply -f FILE_NAME重新部署对应POD
设置水平自动扩充HPA
使用命令 kubectl autoscale deployment nginx--cpu-percent=1 --min=1 --max=10 将自动扩充设定为 CPU-percent 设定为1%, 并且将 minimum replica 数设为 1, maximum replica 数设为 10.
配置完成以后我们使用webbench来对我们部署的NGINX网站进行压力测试:
使用命令 kubectl get hpa 观察水平自动扩充状态, 请注意 Target 中有两个数字, 是 Current/Target CPU 使用率
使用命令 kubectl get deployment 观察 deployment 数量有无增加
使用命令 kubectl get pod 观察 pod 数量有无增加, 并且注意状态, 如果 > 1 表示水平自动扩充 (hpa) 已经成功设置且生效了
清除资源
测试完成以后,我们可以使用kubect delete -f FILE_NAME 来删除对应的deployment资源:
使用kubectl delete hpa nginx来删除hpa资源: