弹性伸缩,目前有哪些策略?每项策略的原理是什么?什么场景建议弹性伸缩?什么场景建议提前扩容?弹性扩容是否对数据库产生压力,该如何避免?两地三中心资源调度,该如何设计弹性伸缩策略?
弹性伸缩,目前有哪些策略?
在容器云平台中实现弹性伸缩主要通过一个叫HPA的资源对象实现 实现策略主要通过cpu和内存的阀值检测扩缩容,但也可以通过自定义业务指标,如通过QPS设定的阈值进行弹性伸缩。
每项策略的原理?
通过cpu和内存值的扩容实现原理是:
1、监控指标的获取
早期kubernetes版本是使用hepster,在1.10后面版本更推荐使用metric-server
2、hepster简单来说是api-server获取节点信息,然后通过kubelet获取监控信息,因为kubelet内置了cadvisor。
metric-server,简单来说是通过metric-api来获取节点信息和监控信息。https://github.com/kubernetes-incubator/metrics-server
通过自定义监控指标扩容实现原理是:
实现prometheus实现自定义metric 来更加灵活的监控指标实现弹性伸缩。
1、pod 内置一个metrics 或者挂一个sidecar 当作exporter对外暴露。
2、Prometheus收集对应的监控指标。
3、Prometheus-adapter定期从prometheus收集指标对抓取的监控指标进行过滤和晒算,通过custom-metrics-apiserver将指标对外暴露。
4、HPA控制器从custom-metrics-apiserver获取数据。
什么场景建议弹性伸缩?
建议一些无状态的,需要面临访问峰值,需要提前准备服务器,预防访问量增长造成的服务器压力过大业务配置弹性伸缩,如经常做秒杀活动的一些业务。
弹性扩容是否对数据库产生压力,该如何避免?
对于弹性扩容的应用多个实例副本连接后端数据库必然会增加后端数据库的压力,建议提前规划好数据库的资源和连接数,避免因为连接过多导致数据库性能问题。
两地三中心资源调度,该如何设计弹性伸缩策略?
目前容器云平台的弹性伸缩实现的范围只在本集群范围内
收起