使用 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 的中断性变更/弃用策略,请阅读相关官方文档。
开始之前
- 需要一个 Azure 订阅。 如果你没有 Azure 订阅,可以创建一个试用版订阅。
- 需要安装 Azure CLI。
- 确保你的防火墙规则配置为允许访问 Kubernetes API 服务器。 有关详细信息,请参阅适用于 Azure Kubernetes 服务 (AKS) 群集的出站网络和 FQDN 规则。
注意
如果使用 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
的值。
使用 Azure CLI 安装 KEDA 加载项
若要安装 KEDA 加载项,请在创建或更新群集时使用 --enable-keda
。
在 AKS 群集上启用 KEDA 加载项
注意
虽然 KEDA 提供了各种自定义选项,但 KEDA 加载项目前提供基本的通用配置。
如果需要自定义配置,可以手动编辑 KEDA YAML 文件以自定义安装。 Azure 不支持自定义配置。
创建启用 KEDA 加载项的新 AKS 群集
使用
az group create
命令创建资源组。az group create --name myResourceGroup --location eastus
使用
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 文档。