首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >介绍Dysnix基于人工智能预测的KEDA自动伸缩器PredictKube

介绍Dysnix基于人工智能预测的KEDA自动伸缩器PredictKube

作者头像
CNCF
发布2022-03-28 14:13:06
发布2022-03-28 14:13:06
6740
举报
文章被收录于专栏:CNCFCNCF

作者:Daniel Yavorovych (Dysnix)、Yuriy Khoma (Dysnix)、Zbynek Roubalik (KEDA)、Tom Kerkhove (KEDA)

Dysnix[1]开发高流量后端系统已经有很长一段时间了,他们的团队每天都会遇到高效的扩展需求。工程师们已经明白,手动处理流量波动和准备基础设施是低效的,因为你需要在流量增加之前部署更多的资源,而不是在事件发生的时候。这个策略有两个问题:首先,当通信流量已经到达时,通常来不及扩展;其次,在通信流量不存在的时候,资源会被过度创建和闲置。

当谈到如何设计这个解决方案时,Dysnix 决定依赖 KEDA,因为它是 Kubernetes 中最通用和最适用的应用程序自动伸缩组件。

KEDA 被用作 PredictKube 客户端的一个组件,它负责传输请求和扩展副本。

Dysnix 的 PredictKube 与 KEDA 集成

Dysnix 构建了PredictKube[2],这是一个解决方案,可以用作负责资源平衡的 KEDA 伸缩器,以及一个学会主动对流量活动模式做出反应的人工智能模型,以帮助及时扩大规模和解决供应过剩的问题。

由于人工智能模型可以观察项目期间一段时间内的每秒请求数(RPS,requests-per-second)或 CPU 值,然后显示长达 6 小时的趋势,因此预测自动伸缩过程成为可能。PredictKube 使用客户和开放数据源(我们使用像HTTP NASA 日志[3]这样的数据集)来训练模型,并明确关于云数据和流量趋势。

有了这个工具,Dysnix 希望能够降低项目成本,更有效地分析流量数据,更负责任地使用云资源,并构建比其他公司更“绿色”和更有性能(更少的停机和延迟)的基础设施。

PredictKube 是如何工作的?

PredictKube 的工作分为两部分:

  1. 在 KEDA 侧,该接口通过 API 连接到有关流量的数据源。PredictKube 使用存储指标的行业标准Prometheus[4]。在那里,它在将客户端通信的数据发送到 API 之前将其匿名化,在 API 中,模型处理完全非个人的信息。
  2. 在人工智能模型方面,下一步,它与一个预测机制相关联——人工智能模型开始获取关于云项目中发生的事情的数据。与水平 Pod 自动伸缩(HPA,Horizontal Pod Autoscaling)等基于规则的标准算法不同,PredictKube 使用机器学习模型来预测时间序列数据,如 CPU 或 RPS 指标。

一开始提供的数据越多,预测就越精确。2 周以上的数据已经足够了。

剩下的就看你了!你可以将预测的趋势形象化,例如,Grafana[5]

使用 PredictKube

  1. 安装 KEDA[6]
  2. 获取 PredictKube API Key
  • 访问PredictKube 网站[7]
  • 注册之后在你的电子邮件获得 API 密钥
  1. 创建 PredictKube 凭据秘密[8]
代码语言:javascript
复制
API_KEY="<change-me>"
$ kubectl create secret generic predictkube-secrets --from-literal=apiKey=${API_KEY}
  1. 配置 Predict Autoscaling
代码语言:javascript
复制
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: keda-trigger-auth-predictkube-secret
spec:
  secretTargetRef:
  - parameter: apiKey
    name: predictkube-secrets
    key: apiKey
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: example
spec:
  scaleTargetRef:
    name: example-app
  pollingInterval: 60
  cooldownPeriod: 300
  minReplicaCount: 3
  maxReplicaCount: 50
  triggers:
  - type: predictkube
    metadata:
      predictHorizon: "2h"
      historyTimeWindow: "7d"  # We recommend using a minimum of a 7-14 day time window as historical data
      prometheusAddress: http://kube-prometheus-stack-prometheus.monitoring:9090
      query: sum(irate(http_requests_total{pod=~"example-app-.*"}[2m]))
      queryStep: "2m" # Note: query step duration for range prometheus queries
      threshold: '2000' # Value to start scaling for
    authenticationRef:
      name: keda-trigger-auth-predictkube-secret
  1. 检查状态并获取统计数据

使用以下命令查看上一步创建的伸缩的配置和状态:

代码语言:javascript
复制
$ kubectl get scaledobject example

要获取用于伸缩的统计数据,使用以下命令:

代码语言:javascript
复制
 kubectl get hpa example

现在你可以在可视化工具中查看伸缩的工作原理。这是 Dysnix 在他们的一个项目中使用 PredictKube 后得到的一个图表的例子:

在这张图中,你可以看到 2 小时冷却时间环境的统计数据。绿色趋势表示预测的副本数量,黄色趋势表示某一时刻的一个现成副本,而蓝色趋势是理想趋势表示支持 RPS 趋势的最接近副本数量。如果你需要一个这样的仪表板模板来制作自己的,请随时联系Daniel[9]

在连接和部署一切之后,你将能够更改你正在观察的时间框架,或者只是在数据到来时监视数据。

下一步

随着这个版本的发布,Dysnix 为 Kubernetes 工作负载创建了预测自动伸缩的第一个里程碑。该团队希望你会发现它很有趣,并帮助测试它并改进它。如果你对 PredictKube 的核心功能有任何问题要问,你可以联系开发团队[10]。对于所有与 KEDA 相关的问题,请通过 GitHub 分享你的反馈[11]

在未来,PredictKube 计划添加更多与其他数据源的集成,以根据项目的其他配置自动伸缩。此外,还有一种实现基于事件的预测扩展的想法,使其不仅能够对趋势做出反应,而且能够对事件的出现做出反应。

如果你有任何关于 PredictKube 机制的问题,你可以联系 Dysnix 团队,或者在其隐私政策[12]中了解更多关于数据使用的信息。下面的人会很乐意帮忙:

  • Daniel Yavorovych[13] - KEDA 集成和 Kubernetes 相关问题;
  • Yurij Khoma[14] - 可以对创建的人工智能模型发表更多评论。

感谢你阅读到这里。

Daniel Yavorovych 和 Yuriy Khoma 代表 PredictKube 开发团队。

参考资料

[1]Dysnix: https://dysnix.com/

[2]PredictKube: https://predictkube.com/

[3]HTTP NASA 日志: ftp://ita.ee.lbl.gov/html/contrib/NASA-HTTP.html

[4]Prometheus: https://prometheus.io/

[5]Grafana: https://grafana.com/

[6]安装 KEDA: https://keda.sh/docs/latest/deploy/

[7]PredictKube 网站: https://predictkube.com/

[8]创建 PredictKube 凭据秘密: https://docs.predictkube.com/quickstart-with-keda#create-predictkube-credentials-secret

[9]Daniel: https://github.com/daniel-yavorovich

[10]联系开发团队: https://predictkube.com/contact

[11]通过 GitHub 分享你的反馈: https://github.com/kedacore/keda/discussions/2605

[12]隐私政策: https://predictkube.com/privacy-policy

[13]Daniel Yavorovych: https://github.com/daniel-yavorovich

[14]Yurij Khoma: https://www.linkedin.com/in/yuriy-khoma-5657a461/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dysnix 的 PredictKube 与 KEDA 集成
  • PredictKube 是如何工作的?
  • 使用 PredictKube
  • 下一步
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档