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

使用 Azure CLI 安装 Kubernetes 事件驱动的自动缩放 (KEDA) 加载项

本文介绍如何使用 Azure CLI 将 Kubernetes 事件驱动的自动缩放 (KEDA) 加载项安装到 Azure Kubernetes 服务 (AKS)。

重要

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

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

备注

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

有关如何使用工作负载标识安全地缩放应用程序的详细信息,请阅读我们的教程。 若要查看 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 的值。

使用 Azure CLI 安装 KEDA 加载项

若要安装 KEDA 加载项,请在创建或更新群集时使用 --enable-keda

在 AKS 群集上启用 KEDA 加载项

备注

虽然 KEDA 提供了各种自定义选项,但 KEDA 加载项目前提供基本的通用配置。

如果需要自定义配置,可以手动编辑 KEDA YAML 文件以自定义安装。 Azure 不支持自定义配置。

创建启用 KEDA 加载项的新 AKS 群集

  1. 使用 az group create 命令创建资源组。

    az group create --name myResourceGroup --location eastus
    
  2. 使用 az aks create 命令创建新的 AKS 群集,并使用 --enable-keda 标志启用 KEDA 加载项。

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-keda \
        --generate-ssh-keys
    

在现有 AKS 群集上启用 KEDA 加载项

  • 使用 az aks update 命令更新现有群集,并使用 --enable-keda 标志启用 KEDA 加载项。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-keda 
    

获取群集的凭据

  • 使用 az aks get-credentials 命令获取 AKS 群集的凭据。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

验证是否已在群集上安装 KEDA 加载项

  • 使用 az aks show 命令验证是否已在群集上安装 KEDA 加载项,并将 --query 参数设置为 workloadAutoScalerProfile.keda.enabled

    az aks show --resource-group myResourceGroup --name myAKSCluster --query "workloadAutoScalerProfile.keda.enabled" 
    

    以下示例输出显示了群集上已安装 KEDA 加载项:

    true
    

验证 KEDA 是否在群集上运行

  • 使用 kubectl get pods 命令验证 KEDA 加载项是否在群集上运行。

    kubectl get pods -n kube-system 
    

    以下示例输出显示了群集上已安装 KEDA 运算符、许可挂钩和指标 API 服务器:

    keda-admission-webhooks-**********-2n9zl           1/1     Running   0            3d18h
    keda-admission-webhooks-**********-69dkg           1/1     Running   0            3d18h
    keda-operator-*********-4hb5n                      1/1     Running   0            3d18h
    keda-operator-*********-pckpx                      1/1     Running   0            3d18h
    keda-operator-metrics-apiserver-**********-gqg4s   1/1     Running   0            3d18h
    keda-operator-metrics-apiserver-**********-trfcb   1/1     Running   0            3d18h
    

验证群集上的 KEDA 版本

要验证 KEDA 的版本,请使用 kubectl get crd/scaledobjects.keda.sh -o yaml 。 例如:

kubectl get crd/scaledobjects.keda.sh -o yaml 

以下示例输出显示 app.kubernetes.io/version 标签中 KEDA 的配置:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.0
    meta.helm.sh/release-name: aks-managed-keda
    meta.helm.sh/release-namespace: kube-system
  creationTimestamp: "2023-08-09T15:58:56Z"
  generation: 1
  labels:
    app.kubernetes.io/component: operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: keda-operator
    app.kubernetes.io/part-of: keda-operator
    app.kubernetes.io/version: 2.10.1
    helm.toolkit.fluxcd.io/name: keda-adapter-helmrelease
    helm.toolkit.fluxcd.io/namespace: 64d3b6fd3365790001260647
  name: scaledobjects.keda.sh
  resourceVersion: "1421"
  uid: 29109c8c-638a-4bf5-ac1b-c28ad9aa11fa
spec:
  conversion:
    strategy: None
  group: keda.sh
  names:
    kind: ScaledObject
    listKind: ScaledObjectList
    plural: scaledobjects
    shortNames:
    - so
    singular: scaledobject
  scope: Namespaced
  # Redacted due to length

在 AKS 群集上禁用 KEDA 加载项

  • 使用 az aks update 命令和 --disable-keda 标志在群集上禁用 KEDA 加载项。

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --disable-keda 
    

后续步骤

本文介绍了如何使用 Azure CLI 在 AKS 群集上安装 KEDA 加载项。

在群集上安装 KEDA 加载项后,可以部署示例应用程序以开始缩放应用。

有关 KEDA 故障排除的信息,请参阅排查 Kubernetes 事件驱动的自动缩放 (KEDA) 加载项

若要了解详细信息,请查看上游 KEDA 文档