使用 ARM 模板安装 Kubernetes 事件驱动的自动缩放 (KEDA) 加载项
本文介绍如何使用 ARM 模板将 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 的中断性变更/弃用策略,请阅读相关官方文档。
开始之前
- 需要一个 Azure 订阅。 如果你没有 Azure 订阅,可以创建一个试用版订阅。
- 需要安装 Azure CLI。
- 本文假设你有一个现有的 Azure 资源组。 如果没有现有的资源组,可以使用
az group create
命令创建一个。 - 确保你的防火墙规则配置为允许访问 Kubernetes API 服务器。 有关详细信息,请参阅适用于 Azure Kubernetes 服务 (AKS) 群集的出站网络和 FQDN 规则。
- 创建 SSH 密钥对。
注意
如果使用 Microsoft Entra 工作负载 ID,并且在工作负载 ID 之前启用 KEDA,则需要重启 KEDA 运算符 Pod,以便可以注入适当的环境变量:
通过运行
kubectl rollout restart deployment keda-operator -n kube-system
重启 Pod。使用
kubectl get pod -n kube-system
获取 KEDA 运算符 Pod,并查找以keda-operator
开头的 Pod。通过运行
kubectl describe pod <keda-operator-pod> -n kube-system
来验证环境变量是否成功注入。 在Environment
下,应会看到AZURE_TENANT_ID
、AZURE_FEDERATED_TOKEN_FILE
和AZURE_AUTHORITY_HOST
的值。
创建 SSH 密钥对
导航到 Azure CLI。
使用
az sshkey create
命令创建 SSH 密钥对。az sshkey create --name <sshkey-name> --resource-group <resource-group-name>
使用 ARM 模板启用 KEDA 加载项
选择“编辑模板”。
通过在 ARM 模板中指定
workloadAutoScalerProfile
字段来启用 KEDA 加载项,如以下示例所示:"workloadAutoScalerProfile": { "keda": { "enabled": true } }
选择“保存”。
更新 ARM 模板的所需值:
- 订阅:选择要用于部署的 Azure 订阅。
- 资源组:选择要用于部署的资源组。
- 区域:选择要用于部署的区域。
- Dns 前缀:输入要用于群集的唯一 DNS 名称。
- Linux 管理员用户名:输入群集的用户名。
- SSH 公钥源:选择“使用 Azure 中存储的现有密钥”。
- 存储密钥:选择前面在文章中创建的密钥对。
选择“查看 + 创建”>“创建”。
连接到 AKS 群集
若要从本地设备连接到 Kubernetes 群集,请使用 kubectl(Kubernetes 命令行客户端)。
也可使用 [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 文档。