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

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

介绍

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

先决条件:

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

什么是 KEDA

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

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

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

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

KEDA 的工作原理

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

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

如何设置 KEDA

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

这可以根据​​文档​​这样做。

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 和内存等常见指标设置扩展的指导。

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

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

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

kubectl get scaledobject

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

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

kubectl delete scaledobject <name of scaled object>

内存缩放

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

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

​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 中构建最具可扩展性的应用程序以及如何使用。目前已存在的​​缩放器​​,应该能够根据您的要求进行缩放。

翻译

​Why KEDA is a game-changer for scaling in Kubernetes​

关注

关注微信公众号【进击云原生】,扫码关注,了解更多咨询,更有免费资源供您学习