Installare il componente aggiuntivo di scalabilità automatica basata su eventi Kubernetes (KEDA) usando l’interfaccia della riga di comando di Azure

Importante

Il componente aggiuntivo KEDA per AKS non supporta attualmente la modifica delle richieste o dei limiti della CPU e di altri valori Helm per il Metrics Server o l'Operator. Tenere presente questa limitazione quando si usa il componente aggiuntivo. In caso di domande, è possibile contattare qui.

Questo articolo illustra come installare il componente aggiuntivo di scalabilità automatica basata su eventi Kubernetes (KEDA) nel servizio Azure Kubernetes (AKS) usando un l’interfaccia della riga di comando di Azure.

Importante

La tua versione di Kubernetes del cluster determina quale versione KEDA verrà installata nel tuo cluster AKS. Per vedere quale versione di KEDA si riferisce a ognuna delle versioni di AKA, vedi la colonna dei componenti aggiuntivi gestiti da AKS della tabella delle versioni del componente Kubernetes.

Per le versioni GA di Kubernetes, AKS offre il supporto completo per la corrispondente versione secondaria di KEDA indicata nella tabella. Le versioni in anteprima di Kubernetes e la patch KEDA più recente sono parzialmente coperte dal supporto clienti con il massimo impegno. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Nota

KEDA versione 2.15+ introduce una modifica significativa che elimina il supporto per le identità dei pod. Se si utilizza l'identità del pod, consigliamo di passare all'identità del carico di lavoro per l'autenticazione. Anche se il componente aggiuntivo gestito di KEDA non esegue attualmente la versione 2.15+ di KEDA, inizierà a eseguirlo nella versione di anteprima di AKS 1.31.

Per ulteriori informazioni su come scalare in modo sicuro le tue applicazioni con l'identità del carico di lavoro, consulta il nostro tutorial. Per consultare il criterio di KEDA relativo alle modifiche incompatibili e alla deprecazione, leggere la documentazione ufficiale.

Operazioni preliminari

Nota

Se stai usando ID dei carichi di lavoro di Microsoft Entra e abiliti KEDA prima di Workload ID, devi riavviare i pod dell'operatore KEDA in modo che le variabili di ambiente appropriate possano essere inserite:

  1. Riavviare i pod eseguendoli con kubectl rollout restart deployment keda-operator -n kube-system.

  2. Ottieni i pod dell'operatore KEDA usando kubectl get pod -n kube-system e cercando i pod che iniziano con keda-operator.

  3. Verifica l'esito positivo dell'inserimento delle variabili di ambiente eseguendo kubectl describe pod <keda-operator-pod> -n kube-system. In Environmentè necessario visualizzare i valori per AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILEe AZURE_AUTHORITY_HOST.

Installare il componente aggiuntivo KEDA con l'interfaccia della riga di comando di Azure

Per installare il componente aggiuntivo KEDA, usare --enable-keda durante la creazione o l'aggiornamento di un cluster.

Abilitare il componente aggiuntivo KEDA sul tuo cluster AKS

Nota

Sebbene KEDA fornisca varie opzioni di personalizzazione, il componente aggiuntivo KEDA attualmente fornisce una configurazione comune di base.

Se sono necessarie configurazioni personalizzate, è possibile modificare manualmente i file YAML KEDA per personalizzare l'installazione. Azure non offre supporto per le configurazioni personalizzate.

Creare un nuovo cluster di Azure Kubernetes Service (AKS) con il componente aggiuntivo KEDA abilitato

  1. Creare un gruppo di risorse usando il comando az group create.

    az group create --name myResourceGroup --location eastus
    
  2. Creare un nuovo cluster AKS usando il comando az aks create e abilitare l'add-on KEDA usando il flag --enable-keda.

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

Abilitare l'add-on KEDA su un cluster AKS esistente

  • Aggiornare un cluster esistente usando il comando az aks update e abilitare il componente aggiuntivo KEDA usando il flag --enable-keda.

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

Ottenere le credenziali per il cluster

  • Recuperare le credenziali per il cluster AKS usando il comando az aks get-credentials.

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

Verificare che il componente aggiuntivo KEDA sia installato nel cluster

  • Verificare che il componente aggiuntivo KEDA sia installato nel cluster usando il comando az aks show e impostare il parametro --query su workloadAutoScalerProfile.keda.enabled.

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

    L'output di esempio seguente mostra che il componente aggiuntivo KEDA è installato nel cluster:

    true
    

Verificare che KEDA sia in esecuzione nel cluster

  • Verificare che il componente aggiuntivo KEDA sia in esecuzione nel cluster usando il comando kubectl get pods.

    kubectl get pods -n kube-system 
    

    L'output di esempio seguente mostra l'operatore KEDA, il hook di ammissione e il server delle API metriche installati nel cluster.

    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
    

Verificare la versione KEDA nel cluster

Per verificare la versione di KEDA, usare kubectl get crd/scaledobjects.keda.sh -o yaml . Ad esempio:

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

L'output di esempio seguente mostra la configurazione di KEDA nell'etichetta app.kubernetes.io/version :

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

Ridimensionare verticalmente l'operatore keda se si verificano errori OOMKill

Se i pod keda-operator riscontrano errori OOMKill, è possibile usare verticale pod autoscaler (VPA) per regolare automaticamente i limiti di CPU e memoria.

  1. Abilitare VPA sul cluster AKS usando il comando az aks update.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-vpa
    
  2. Creare un file denominato keda-operator-vpa.yaml con la configurazione VPA seguente per la distribuzione del 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"
    
  3. Applicare la configurazione VPA al cluster usando il comando kubectl apply.

    kubectl apply -f keda-operator-vpa.yaml
    

    La VPA regola automaticamente le richieste di CPU e memoria e i limiti per i pod keda-operator in base all'utilizzo osservato.

Disabilitare il componente aggiuntivo KEDA sul cluster AKS

  • Disabilitare il componente aggiuntivo KEDA nel cluster usando il comando az aks update con il flag --disable-keda.

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

Passaggi successivi

Questo articolo ha illustrato come installare il componente aggiuntivo KEDA in un cluster del servizio Azure Kubernetes utilizzando l'interfaccia della riga di comando di Azure.

Con il componente aggiuntivo KEDA installato nel cluster è possibile distribuire un'applicazione di esempio per avviare il dimensionamento delle app.

Per informazioni sulla risoluzione dei problemi di KEDA, vedi Risolvere i problemi relativi al componente aggiuntivo di scalabilità automatica basata su eventi Kubernetes (KEDA).

Per saperne di più, vedi la documentazione di KEDA upstream.