本文按步骤展示如何使用 容器服务 Kubernetes 托管版 和 ECI 完成在线业务的弹性伸缩。
1. 准备业务镜像
- service-entry: aliyuneci/ack-vk-autoscaler-demo-service-entry:1.0
2. 创建 容器服务 Kubernetes 托管版集群
本文使用“Kubernetes 托管版”集群类型,使用ECS Node服务业务的正常水位,通过ack-virtual-kubelet-autoscaler来使用Virtual Node(底层资源是ECI)来服务业务的弹性水位。
3. 部署vk和vk-autoscaler
在容器服务控制台的市场-应用目录中,根据文档先后安装ack-virtual-node和ack-virtual-kubelet-autoscaler。
4. 部署业务应用
填入相关内容,选择前面准备好的业务镜像,暴露相关的端口信息(service-entry为8080,service-a为8001,service-b为8002),配置service,即可创建完成。
5. 配置弹性伸缩策略
本文为上述提及的app均配置了CPU、MEM维度的HPA(容器组水平伸缩器)。
6. 部署三方应用
在市场-应用目录中,可以根据业务需要,安装部署相应的App,本文中部署了以下App。
- ack-virtual-node:通过vk来将pod创建在eci上。
- ack-virtual-kubelet-autoscaler:通过vk动态的将pod创建在eci上(本文在eci上实现的弹性伸缩能力就是借助于此)。
- ahas:提供应用架构自动探测,故障注入式高可用能力评测和一键流控降级等功能。
- arms-pilot:自动发现应用拓扑、自动生成 3D 拓扑、自动发现并监控接口、捕获异常事务和慢事务。
- arms-prometheus:对接开源 Prometheus 生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的 Prometheus 服务。
7. PTS 压测
使用PTS对服务进行压测,来模拟业务低峰期到高峰期的一个过程。本文从5个并发施压,一直递增到40个并发。
8. 观察效果
更多关于ACK+ECI的在线业务弹性伸缩的细节,可以观看《在线业务弹性扩缩容最佳实践》视频进行了解。