结合论文研究一下云平台中弹性伸缩技术,k8s中提供了HPA策略来实现弹性扩容,基于负载预测的弹性伸缩技术。

HPA核心代码

kubernetes/pkg/controller/podautoscaler/horizontal.go

     

伸缩理论关注的问题主要是在面临超出现有集群最大承载能力的时候,如何通过调整集群的规模以提高集群的承载能力,从而保证用户体验和系统服务的稳定性,同时在集群负载很低的时候,尽可能的减少闲置服务器带来的资源浪费。资源的伸缩性是指通过增加 CPU、内存等硬件资源的投入来提升软件效率以达到更高的系统性能。平常所说的集群伸缩方法大多数是指资源的伸缩性,而资源的伸缩性又可以划分为两个子类。从伸缩的方向划分,分为纵向的伸缩和横向的伸缩。
       纵向伸缩是指通过提升系统当前各个节点的处理能力来达到提升系统整体处理能力的伸缩方法。提高各节点的处理能力具体来说包括服务器升级现有的配置,例如更换主频更高、多核的处理器,更换容量更大的内存条,配置读写速度更快的硬盘、甚至替换为更高端、更强劲的处理器等。
      横向伸缩是单纯地通过增加节点的数量来提升系统整体的处理能力。横向伸缩的优点在于当每台服务器成本比较低的情况下,可以很容易地搭建起一个系统性能有保障的集群,相比纵向伸缩集群,这个集群面对增加的用户量或者数据量带来的性能瓶颈可以处理得更灵活、游刃有余,并且能够很好的减少由于单台服务器出现故障而对于系统整体带来的影响。

当前阶段常用的策略算法有:
 1.单指标非预测性算法
        常用的有 CPU 利用率为指标,不考虑多条历史记录,只关注当前的负载,直接将历史记录中的最后一条数据(可认为是当前负载)作为扩容指数输出。这种算法简单有效,根据实时的负载大小与阈值进行对比,超过了则扩容,否则保持原样。因此这种算法虽然简单,却是目前工业界普遍采用的。缺点:容易受噪音干扰;反应滞后,不具备预测性;无法预测到 CPU 之外的因素(内存等)引起的负载过重情况。
 2.多指标自回归算法
自回归模型一般用于统计和信号处理,是一种经常被用来对各种自然现象进行建模和预测的随机过程。Web 应用的负载变化虽然不是自然现象,但其多变且难以准确预测的特征在某种程度上具有一定的随机性,因此可以用自回归模型对负载进行建模和预测。将多个负载指标数据经过处理,求出加权负载平均值作为指标,将之用自回归算法处理得出扩容指数。缺点:该方法可以实现预测,且考虑了多种指标的影响。但是没有考虑到 Web 服务访问暗含的规律性,预测性不够高。
Web负载分析
        为了能够准确地预测 Web 集群负载,需要对负载进行收集分析,从而了解负载的特性,并针对这些特性来选择最适合的方法来进行平台负载预测。负载的几个特性,主要有以下六个方面 
1.  负载有很大的波动性,这说明有必要通过预测算法来改善负载相关问题。
2.  方差和最大值之类的差异量数 1 与平均值是正相关的,平均负载高的机器也有较大的方差和最大值,这种关联表明对高负载量的机器进行预测更有价值。
3.  负载相对来说比较复杂,有时多峰分布的负载不能根据一般的分布曲线来预测。
4.  通过负载时间序列分析可以知道,负载与时间有很强的关联,也就是说上一时间段的负载对下一时间段的负载有很大影响。所以对于负载预测来说,线性模型也许是比较适合的预测模型。
5.  负载具有自相似性,其赫斯特指数范围是0.63 至 0.97,已经接近赫斯特指数的上限 2。通过这个结果可知负载按照时间以复杂的方式变化着,并存在长期依赖性。
6.  负载的变化在不同时间段显示出不同特性。有时负载在一段较长时间内非常稳定,但是会忽然有一个较大的波动,这种波动可能是因为新的任务被创建或销毁等,针对这种突发波动,线性模型可能需要自适应并进行修改。

利用GBDT算法,选取cpu,内存,请求响应时间作为指标,结合时间序列来进行负载预测以实现弹性伸缩。

自动扩展在以往研究中有多种实现方式,比如基于阈值的策略、增强型学习、队列理论、控制理论以及时间序列分析等。其中,基于阈值的策略在目前的云中实现得较为普遍。时间序列预测分析方法有自回归预测模型、指数预测模型和人工神经网络模型。

自回归预测模型。自回归模型是用过去若干时刻的变量的线性组合来预测以后某时刻随机变量的线性回归模型
指数平滑预测模型。指数平滑法是一种特殊的加权平均法,对本期观察值和本期预测值赋予不同的权重,求得下一期预测值的方法
BP 神经网络预测模型。BP 神经网络的核心是 BP算法:将正确的结果和产生的结果进行比较,得到误差,再逆推对神经网中的权重进行反馈修正,从而来完成学习的过程,这种向后反馈的学习机制被称为BP神经网络的反馈机制

在应用系统面临高并发、大流量的突发式请求时,监控系统会监测到应用容器的 CPU、内存等资源使用量迅速上升,对应的策略就是通过设置告警阈值来触发弹性伸缩机制。以递增步长的节奏进行扩容;峰值过后,以固定步长的节奏进行缩容。由弹性伸缩模块启动或删除的应用容器,在Etcd中有对应的键值变化。Confd 检测到这种变化后,就会动态生成 Haproxy 的配置文件并重新加载,之后就会将前端的用户请求分流到后端的应用容器上,提供具体的服务,实现应用系统的负载均衡。此动态负载均衡弹性伸缩系统依据应用容器的负载状态,来提供对应的处理能力,按需供给,在保证系统的稳定运行的前提下,将系统开销降低到最低。

基于灰色模型的云资源动态伸缩功能

灰色预测通过鉴别系统因素之间发展趋势的差异程度,对原始数据进行生成处理,寻找系统变动的规律,生成有较强规律性 的 数 据 序 列
,然 后 建 立 相 应 的 微 分 方 程 模型,从而预测事物未来发展趋势。灰色预测的数据是通过生成数据模型得到的预测值的逆处理结果。灰色预测以灰色模型为基础。

容器化工作流系统

基于负载预测的弹性伸缩服务模型,设定性能指标,构建模型预测负载值,提前进行弹性伸缩服务,其中常用的预测模型由自回归模型,指数预测模型,BP神经网络,GBDT预测以及灰度模型等,其根本是回归问题,可以采用机器学习等方法来提前预测。

参考论文

[1]徐建中,王俊,周迅钊,徐雷.一种基于预测的云计算的弹性伸缩策略[J].计算机与数字工程,2018,46(06):1160-1162+1231.

[1]王强,王瑞刚,周德永.基于Docker的动态负载均衡弹性伸缩系统[J].计算机与数字工程,2018,46(06):1140-1144+1159.

[1]李正寅. 服务创新平台中基于Docker的弹性负载均衡功能的设计与实现[D].北京邮电大学,2018.

[1]刘彪,王宝生,邓文平.云环境下支持弹性伸缩的容器化工作流框架[J/OL].计算机工程:1-12[2018-12-14].https://doi.org/10.19678/j.issn.1000-3428.0049811.

[1]王天泽.基于灰色模型的云资源动态伸缩功能研究[J].软件导刊,2018,17(04):131-134.

[1]陈金光. 基于阿里云的Kubernetes容器云平台的设计与实现[D].浙江大学,2018.

[1]王晓钰. 基于云平台可弹性扩缩的Web应用系统的研究与实现[D].北京邮电大学,2018.

[1]刘锦福. 基于Docker的直播云平台弹性调度系统设计及实现[D].北京邮电大学,2018.

[1]梅荣.基于云计算的弹性负载均衡服务研究[J].中国公共安全,2018(01):194-199.

[1]王晓钰,吴伟明,谷勇浩.基于云平台的弹性Web集群扩缩容机制的研究[J].软件,2017,38(11):24-28.

[1]杨若琪.云计算中弹性伸缩负载预测算法的研究和改进[J].电子制作,2017(16):40-41+59

[1]张淼. 面向云服务的弹性调度算法的研究与实现[D].哈尔滨工业大学,2017.

Kubernetes24--弹性伸缩2相关推荐

  1. 基于希克斯需求价格弹性计算_Serverless弹性伸缩的现状调研(超详细)

    作者:闲鱼技术--影湛 引言 闲鱼的服务端技术架构正向着云原生/Serverless化发展,Serverless具有着运维自动化.按需加载.弹性伸缩.强隔离性.敏捷开发部署等技术特点,带来了降低人力成 ...

  2. 达达集团智能弹性伸缩架构的设计与落地实践

    文章来源:架构头条,嘉宾 | 杨森,编辑 | 李忠良 面对节假日常规促销.618/ 双 11 购物节等配送业务订单量的暴增,达达集团通过智能弹性伸缩架构和精细化的容量管理,有效地做到了业务系统对配送全 ...

  3. AutoScaling 弹性伸缩附加与分离RDS实例

    阿里云弹性伸缩服务(AutoScaling)推出新功能:AttachDBInstances和DetachDBInstances.新功能使得您可以自由的对伸缩组附加和移除Rds实例. 本文将为您介绍如何 ...

  4. Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局

    传统弹性伸缩的困境 弹性伸缩是 Kubernetes 中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划 ...

  5. Kubernetes大集群怎么管?基于监控的弹性伸缩方法

    导语: 我们通常使用Prometheus来对Kubernetes运行情况进行监控.并根据监控数据来扩容或者缩容.通常的扩/缩容都是根据内存或者CPU的使用,但是很多时候我们扩/缩容的依据通常是业务监控 ...

  6. 笔记 - AliCloud Auto Scaling(弹性伸缩)简介

    有时高峰期的访问量预测不准, 所以提前准备ECS不是很work 弹性AS能根据CPU 使用率 来自动调整 ECS的数量 先找1台可用的ECS 创建1个镜像, 然后利用镜像创建新的ECS. AS 本身不 ...

  7. Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

    作者 |  车漾 Fluid 社区 Commiter 谢远东 Fluid 社区 Commiter 来源 | 阿里巴巴云原生公众号 **导读:**弹性伸缩作为 Kubernetes 的核心能力之一,但它 ...

  8. Serverless 与容器决战在即?有了弹性伸缩就不一样了

    作者 | 阿里云容器技术专家 莫源   本文整理自莫源于 8 月 31 日 K8s & cloudnative meetup 深圳场的演讲内容.关注"阿里巴巴云原生"公众号 ...

  9. Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源

    作者| 阿里云容器技术专家刘中巍(莫源) 导读:Kubernetes弹性伸缩系列文章为读者一一解析了各个弹性伸缩组件的相关原理和用法.本篇文章中,阿里云容器技术专家莫源将为你带来定时伸缩组件  kub ...

  10. Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性

    前言 在本系列的前三篇文章中,我们介绍了弹性伸缩的整体布局以及 HPA 的一些原理,HPA 的部分还遗留了一些内容需要进行详细解析.在准备这部分内容的期间,会穿插几篇弹性伸缩组件的最佳实践.今天我们要 ...

最新文章

  1. 基数排序算法(基于Java实现)
  2. iOS - UISearchController
  3. 在python中可以用什么关键字来声明一个类_3. Python基础语法
  4. 《网站情感化设计与内容策略》一第1章 情感化设计1.1 革命:有失亦有得
  5. 丢失api-ms-win-crt-runtime-l1-1-0.dll
  6. 算法基础系列之三:螺旋形矩阵
  7. 工作337:pc-ele-ment联查问题
  8. mysql order by 索引名字_MySQL如何利用索引优化ORDER BY排序语句
  9. mysql6默认什么字符集_mysql默认字符集问题
  10. 如何去掉图片上的logo
  11. Python3 语音识别谷歌验证码
  12. 凯盛融英在港招股书“失效”:遭证监会严格发问,需补充披露
  13. android profile 打包_Android 利用 Managed Profile 确保兼容性
  14. AI安全领域的“雨山机车大赛”,改变了什么?
  15. Spring Controller get、post传参解析
  16. 特殊符号备用——三角形
  17. Hyper-V安装Server 2019虚拟机
  18. python:map_reduct_filter_sorted
  19. 如果redis没有设置expire,是否默认永不过期?
  20. [Violet]蒲公英(分块)

热门文章

  1. 迅雷下载出错应版权方要求文件无法下载
  2. vue 中 axios的post请求,415错误
  3. C++练习题:分数化简
  4. Web安全—information_schema数据库详解基础补充
  5. Monaco Editor教程(十七):代码信息指示器CodeLens配置详解
  6. 台式计算机总是重启,电脑为什么老是自动重启?我的电脑经常自动重启!!
  7. Cookie起源与发展
  8. 安卓studio 连接雷电模拟器的历程
  9. RFC4568规范:SDP协商SRTP密钥
  10. 修改win10服务器登录密码,玩转Win10密码基础篇:设置修改系统登录密码