你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Kubernetes Event-driven Autoscaling (KEDA) 加载项简化的应用程序自动缩放

Kubernetes 事件驱动的自动缩放 (KEDA) 是一个单一用途的轻型组件,旨在简化应用程序的自动缩放,并且是一个 CNCF 毕业项目。

它应用事件驱动的自动缩放来缩放应用程序,以可持续且经济高效的方式满足需求,并采用缩放到零。

KEDA 附加产品通过部署托管 KEDA 安装,为你提供丰富的 Azure KEDA 缩放程序目录,可以在 Azure Kubernetes 服务 (AKS) 群集上使用这些缩放程序来扩展应用程序,从而使工作更加轻松。

注意

KEDA 版本 2.15 引入了一项中断性变更,可删除 Pod 标识支持。 如果你在使用 Pod 标识,建议转用工作负载标识进行身份验证。 虽然 KEDA 托管加载项目前还不能运行 KEDA 版本 2.15,但它将在 AKS 预览版 1.32 中开始运行。

有关如何使用工作负载标识安全地缩放应用程序的详细信息,请阅读我们的教程。 若要查看 KEDA 的中断性变更/弃用策略,请阅读相关官方文档

体系结构

KEDA 提供两个主要组件:

  • 通过 KEDA 运算符,最终用户可将工作负载从 0 横向缩放到 N 实例,并支持 Kubernetes 部署、作业、StatefulSets 或定义 /scale 子资源的任何自定义资源。
  • 指标服务器向 Kubernetes 中的 Horizontal Pod Autoscaler (HPA) 公开外部指标,用于自动缩放,例如 Kafka 主题中的消息或 Azure 事件中心的事件数。 由于上游限制,KEDA 必须是唯一安装的外部指标适配器。

示意图显示 KEDA 的体系结构,还显示它如何扩展 Kubernetes,而不是重新创建。

详细了解 KEDA 在官方 KEDA 文档中的工作方式。

安装

可以通过使用 ARM 模板Azure CLI 启用 KEDA 加载项,将 KEDA 添加到 Azure Kubernetes 服务 (AKS) 群集。

KEDA 加载项提供与 AKS 集成的完全受支持的 KEDA 安装。

功能和特性

KEDA 提供以下功能和特性:

  • 使用缩放到零构建可持续且经济高效的应用程序
  • 使用丰富的 Azure KEDA 缩放程序目录缩放应用程序工作负载以满足需求
  • 使用 ScaledObjects 自动缩放应用程序,例如 Deployments, StatefulSets 或任何定义 /scale 子资源的自定义资源
  • 使用 ScaledJobs 自动缩放类似作业的工作负载
  • 通过将自动缩放身份验证与工作负载分离来使用生产级安全性
  • 自带外部缩放器,以使用定制的自动缩放决策
  • Microsoft Entra 工作负载 ID 集成以进行身份验证

注意

如果计划使用工作负载标识,请在启用 KEDA 附加产品之前启用工作负载标识附加产品

附加限制

KEDA AKS 加载项具有以下限制:

  • KEDA 的 HTTP 加载项(预览版)未随扩展一起安装 HTTP 工作负载,但可以单独部署。
  • KEDA 的用于 Azure Cosmos DB 的外部缩放程序基于 Azure Cosmos DB 更改源进行缩放,不会随扩展一起安装,但可以单独部署。
  • Kubernetes 群集中只允许使用一个外部指标服务器。 因此,KEDA 加载项应该是群集中唯一的外部指标服务器。
    • 不支持多个 KEDA 安装

对于一般 KEDA 问题,我们建议访问常见问题解答概述

注意

如果使用 Microsoft Entra 工作负载 ID,并且在工作负载 ID 之前启用 KEDA,则需要重启 KEDA 运算符 Pod,以便可以注入适当的环境变量:

  1. 通过运行 kubectl rollout restart deployment keda-operator -n kube-system 重启 Pod。

  2. 使用 kubectl get pod -n kube-system 获取 KEDA 运算符 Pod,并查找以 keda-operator 开头的 Pod。

  3. 通过运行 kubectl describe pod <keda-operator-pod> -n kube-system 来验证环境变量是否成功注入。 在 Environment 下,应会看到 AZURE_TENANT_IDAZURE_FEDERATED_TOKEN_FILEAZURE_AUTHORITY_HOST 的值。

支持的 Kubernetes 和 KEDA 版本

群集 Kubernetes 版本确定将在 AKS 群集上安装哪些 KEDA 版本。 若要查看哪些 KEDA 版本映射到每个 AKS 版本,请参阅 Kubernetes 组件版本表的“AKS 托管附加产品”列。

对于 GA Kubernetes 版本,AKS 提供对表中相应 KEDA 次要版本的完全支持。 客户支持部门会尽力为 Kubernetes 预览版和最新的 KEDA 修补程序提供部分支持。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

后续步骤