本文說明如何使用 Azure CLI 將 Kubernetes 事件驅動自動調整 (KEDA) 附加元件安裝至 Azure Kubernetes Service (AKS)。
重要
您的叢集 Kubernetes 版本會決定 AKS 叢集上將安裝的 KEDA 版本。 若要查看哪些 KEDA 版本對應至每個 AKS 版本,請參閱 Kubernetes 元件版本資料表的 [AKS 受控附加元件] 資料行。
針對正式發行 Kubernetes 版本,AKS 會完整支援資料表中對應的 KEDA 次要版本。 客戶支援部門將盡力而為,對 Kubernetes 預覽版本和最新 KEDA 修補程式提供部分支援。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:
注意
KEDA 版本 2.15+ 導入重大變更,會移除 Pod 身分識別支援。 如果您使用 Pod 身分識別,我們建議您移至 Workload 身分識別來進行驗證。 雖然 KEDA 受控附加元件目前未執行 KEDA 2.15 版+,但它將會開始在 AKS 預覽 1.31 版中執行。
如需有關如何使用工作負載身分識別安全地調整應用程式的詳細資訊,請閱讀我們的教學課程。 若要檢視 KEDA 的重大變更/廢止政策,請閱讀其官方文件。
開始之前
- 您需要訂閱 Azure。 如果您沒有 Azure 訂閱,則可以建立免費帳戶。
- 您需要安裝 Azure CLI。
- 請確定您已將防火牆規則設定為允許存取 Kubernetes API 伺服器。 如需詳細資訊,請參閱 Azure Kubernetes Services (AKS) 叢集的輸出網路和 FQDN 規則。
注意
如果您使用 Microsoft Entra 工作負載 ID,且在 Workload ID 之前啟用 KEDA,您需要重新啟動 KEDA Operator 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 附加元件
驗證您的叢集是否已安裝 KEDA 附加元件,使用
az aks show命令,並將--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 Operator、Admissions Hook 和 Metrics API Server:
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
如果您遇到 OOMKill 錯誤,請垂直調整 keda-operator
如果 keda-operator Pod 遇到 OOMKill 錯誤,您可以使用垂直 Pod 自動調整器 (VPA) 自動調整 CPU 和記憶體限制。
請使用
az aks update命令在您的 AKS 叢集中啟用 VPA。az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-vpa建立一個名為
keda-operator-vpa.yaml的檔案,並使用以下的 VPA 配置針對 keda-operator 部署。apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: keda-operator-vpa spec: targetRef: apiVersion: "apps/v1" kind: Deployment name: keda-operator updatePolicy: updateMode: "InPlaceOrRecreate"用指令
kubectl apply將 VPA 設定套用到你的叢集。kubectl apply -f keda-operator-vpa.yamlVPA 會根據觀察到的使用情況,自動調整 Keda 操作員 Pod 的 CPU 與記憶體請求與限制。
停用 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 文件。