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

使用 ARM 模板安装 Kubernetes 事件驱动的自动缩放 (KEDA) 加载项

本文介绍如何使用 ARM 模板将 Kubernetes 事件驱动的自动缩放 (KEDA) 加载项部署到 Azure Kubernetes 服务 (AKS)。

重要

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

对于 GA Kubernetes 版本,AKS 提供对表中相应 KEDA 次要版本的完全支持。 客户支持部门会尽力为 Kubernetes 预览版和最新的 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 的值。

创建 SSH 密钥对

  1. 导航到 Azure Cloud Shell

  2. 使用 az sshkey create 命令创建 SSH 密钥对。

    az sshkey create --name <sshkey-name> --resource-group <resource-group-name>
    

使用 ARM 模板启用 KEDA 加载项

  1. 为 AKS 群集部署 ARM 模板

  2. 选择“编辑模板”。

  3. 通过在 ARM 模板中指定 workloadAutoScalerProfile 字段来启用 KEDA 加载项,如以下示例所示:

        "workloadAutoScalerProfile": {
            "keda": {
                "enabled": true
            }
        }
    
  4. 选择“保存”。

  5. 更新 ARM 模板的所需值:

    • 订阅:选择要用于部署的 Azure 订阅。
    • 资源组:选择要用于部署的资源组。
    • 区域:选择要用于部署的区域。
    • Dns 前缀:输入要用于群集的唯一 DNS 名称。
    • Linux 管理员用户名:输入群集的用户名。
    • SSH 公钥源:选择“使用 Azure 中存储的现有密钥”。
    • 存储密钥:选择前面在文章中创建的密钥对。
  6. 选择“查看 + 创建”>“创建”。

连接到 AKS 群集

若要从本地设备连接到 Kubernetes 群集,请使用 kubectl(Kubernetes 命令行客户端)。

如果使用的是 Azure Cloud Shell,则 kubectl 已安装。 也可使用 az aks install-cli 命令在本地安装它。

  • kubectl 配置为连接到 Kubernetes 群集,使用 az aks get-credentials 命令。 以下示例获取 MyResourceGroup 中名为“MyAKSCluster”的 AKS 群集的凭据:
az aks get-credentials --resource-group MyResourceGroup --name MyAKSCluster

示例部署

以下代码片段是一个示例部署,它创建了一个已启用 KEDA 的群集,其中包含一个由三个 DS2_v5 节点组成的单节点池。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "apiVersion": "2023-03-01",
            "dependsOn": [],
            "type": "Microsoft.ContainerService/managedClusters",
            "location": "westcentralus",
            "name": "myAKSCluster",
            "properties": {
                "kubernetesVersion": "1.27",
                "enableRBAC": true,
                "dnsPrefix": "myAKSCluster",
                "agentPoolProfiles": [
                    {
                        "name": "agentpool",
                        "osDiskSizeGB": 200,
                        "count": 3,
                        "enableAutoScaling": false,
                        "vmSize": "Standard_D2S_v5",
                        "osType": "Linux",
                        "type": "VirtualMachineScaleSets",
                        "mode": "System",
                        "maxPods": 110,
                        "availabilityZones": [],
                        "nodeTaints": [],
                        "enableNodePublicIP": false
                    }
                ],
                "networkProfile": {
                    "loadBalancerSku": "standard",
                    "networkPlugin": "kubenet"
                },
                "workloadAutoScalerProfile": {
                    "keda": {
                        "enabled": true
                    }
                }
            },
            "identity": {
                "type": "SystemAssigned"
            }
        }
    ]
}

开始使用 KEDA 缩放应用

可以使用自定义资源定义 (CRD) 使用 KEDA 自动缩放应用。 有关详细信息,请参阅 KEDA 文档

删除资源

  • 使用 az group delete 命令移除资源组和所有相关资源。

    az group delete --name <resource-group-name>
    

后续步骤

本文介绍了如何在 AKS 群集上安装 KEDA 加载项,并验证它是否已安装且正在运行。 在群集上安装 KEDA 加载项后,可以部署示例应用程序以开始缩放应用。

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

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