查看原文
其他

为什么 KEDA 是 Kubernetes 自动伸缩游戏规则的改变者

点击上方蓝字关注 👆👆

大家好呀,近期微信公众号改版,为了防止错过消息,希望大家可以动动小手将此公众号添加到“星标⭐”,非常感谢~



KEDA 可以根据几乎任何指标提供商可以想象的任何指标轻松扩展,并且在世界上一些最大的公司的云生产中大规模运行

介绍

在这篇文章中,我将介绍 Kubernetes 事件驱动的自动缩放 (KEDA) 使 Kubernetes 管理员能够完成什么以及如何开始。

先决条件:

  • Kubernetes 集群 1.16 或以上版本
  • Kubernetes 集群的管理员权限

什么是 KEDA

Kubernetes 事件驱动自动缩放 (KEDA) 是对内置 Kubernetes Horizontal Pod Autoscaler (HPA) 的补充自动缩放技术。KEDA 并没有取代 HPA,它仍然使用它来发挥它的魔力。

可在此处[1]找到 KEDA 的官方网站。KEDA 有很好的文档,所以很容易设置。KEDA 是一个由微软支持的开源云原生项目,它在 Azure AKS(Azure 的 Kubernetes 产品)中得到完全支持。它被微软、Zapier 和阿里巴巴云等大公司使用,因此在大规模生产中运行。

为什么 KEDA 是 Kubernetes 世界的游戏规则改变者

KEDA 使 Kubernetes 能够根据标准内置 Kubernetes 指标(如 CPU 和内存)以及高级指标(如消息队列的队列深度、每秒请求数、计划的 cron 作业)等指标将 pod 副本扩展到零和向上,来自您自己的应用程序日志记录的自定义指标以及您可以想象的任何其他指标。这是 Kubernetes 中内置的 HPA 无法轻易做到的。这里[2] 是 KEDA 支持的扩展提供商列表,可跳转查看。

KEDA 的工作原理

KEDA 监控来自外部指标提供程序系统(例如 Azure Monitor)的指标,然后根据基于指标值的缩放规则进行缩放。它直接与度量提供者系统通信。它作为 Kubernetes Operator 运行,它只是一个 pod 并持续监控。

如何设置 KEDA

安装 KEDA 最简单的方法是使用 helm chart。

这可以根据文档[3]这样做:

helm repo add kedacore https://kedacore.github.io/charts
helm repo update
kubectl create namespace keda
helm install keda kedacore/keda --namespace keda

配置缩放

现在 KEDA 已安装并在集群中运行,您将需要编写一个清单文件来声明要扩展的依据、何时扩展以及如何扩展。下面将提供有关如何根据 CPU 和内存等常见指标设置扩展的指导。

所有支持的缩放类型和来源都可以在文档中找到[4]

缩放被定义为一个清单 YAML 文件,和 deployments 类似,类型是 ScaledObject。

可以使用以下命令查询现有的 scaling objects:

kubectl get scaledobject

可以使用以下命令删除缩放的对象:

kubectl delete scaledobject <name of scaled object>

内存缩放

可以设置规则以根据 pod 内容器内的内存使用情况进行扩展。内存扩展文档可以在这里找到[5]

缩放可以基于以下类型的值:

Utilization,目标值是所有相关 pod 的资源指标的平均值,表示为 pod 资源请求值的百分比。
AverageValue,目标值是所有相关 pod(数量)的指标平均值的目标值。

已为以下特定清单示例选择了利用率:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: memory-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    name: sandboxapi
  triggers:
  - type: memory
    metadata:
      type: Utilization
      value: "50"

此示例创建一个基于内存利用率伸缩 pod 的规则。scaleTargetRef 是指应该扩展的 Deployment。

CPU 缩放

缩放也可以基于 pod 中容器内的 CPU 使用率。

缩放可以基于以下类型的值:

Utilization,目标值是所有相关 pod 的资源指标的平均值,表示为 pod 资源请求值的百分比。

AverageValue,目标值是所有相关 pod(数量)的指标平均值的目标值。

已为以下特定清单示例选择了利用率:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: memory-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    name: sandboxapi
  triggers:
  - type: cpu
    metadata:
      type: Utilization
      value: "50"

此示例创建一个基于当前 CPU 利用率扩展 pod 的规则。scaleTargetRef 是指应该扩展的 Deployment。

结论

本文介绍了 KEDA,它如何帮助您尽可能轻松地在 Kubernetes 中构建最具可扩展性的应用程序以及如何使用。目前已存在的缩放器[6],应该能够根据您的要求进行缩放。

参考资料

[1]

此处: https://keda.sh/

[2]

这里: https://keda.sh/docs/2.6/scalers/

[3]

文档: https://keda.sh/docs/2.6/deploy/

[4]

文档中找到: https://keda.sh/docs/2.6/scalers/

[5]

这里找到: https://keda.sh/docs/2.6/scalers/memory/

[6]

缩放器: https://keda.sh/docs/2.6/scalers/


- END -




后台回复“加群”,带你进入高手如云交流群



推荐阅读


k8s 集群准备好升级到 v1.24 了吗?

4个好用的Linux监控工具

7 个超级好用的 VS Code 扩展!

漫画轻松看懂如何用 Kubernetes 实现 CI/CD

2021 年度最佳开源软件!

再见了 Xshell、iTerm2,这款开源的终端工具真香

5 款顶级 Docker 容器 GUI 管理工具!

Windows CMD常用命令大全

7 个用于调度和编排的 CNCF 工具

阿里开源的低代码引擎,已收获 4.5K 星星

如何调试Kubernetes集群中的网络延迟问题

再见 Jenkins:Drone 如何为工程团队简化 CI/CD

Kubernetes 已“跨越鸿沟”,逆袭成为主流

这 6 个方面,对微服务安全至关重要

像写 Markdown 一样画流程图

这个开源工具防止错误配置  乱入 K8s 生产环境

5 个 Docker 替代方案

6 个 CI/CD 的 CNCF 项目,你知道几个?

新手必须知道的 Kubernetes 架构

Kubernetes 架构核心点详细总结!




全网粉丝20W的头部大号,专注云原生、Golang、Linux实用脚本,效率工具,免费CSDN下载,回复【go】获取近 6 万 Star 的资源回复【1024】获取全种类IT资料,回复【红包封面】获取超好看封面,回复【加群】进入高手如云技术交流群



分享、点赞和在看

支持我们分享更多好文章,谢谢!

                

 点个在看集群永保稳定👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存