Instalar o complemento KEDA (Dimensionamento Automático Controlado por Eventos do Kubernetes) usando a CLI do Azure

Importante

No momento, o complemento KEDA para AKS não dá suporte à modificação das solicitações ou limites de CPU e de outros valores do Helm para o Servidor de Métricas ou Operador. Tenha essa limitação em mente ao usar o complemento. Se você tiver alguma dúvida, fique à vontade para entrar em contato aqui.

Este artigo mostra como instalar o complemento KEDA (Dimensionamento Automático Controlado por Eventos do Kubernetes) para o AKS (Serviço de Kubernetes do Azure) usando a CLI do Azure.

Importante

A versão do cluster do Kubernetes determina a versão do KEDA que será instalada no cluster do AKS. Para visualizar qual versão do KEDA é mapeada para cada versão do AKS, consulte a coluna de complementos gerenciados do AKS da tabela de versão do componente do Kubernetes.

Para as versões GA do Kubernetes, o AKS oferece suporte completo à versão menor correspondente do KEDA, conforme a tabela. As versões prévias do Kubernetes e o patch do KEDA mais recente são parcialmente cobertos pelo suporte ao cliente com base no melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

Observação

A versão 2.15 do KEDA apresenta uma alteração interruptiva que remove o suporte à identidade do pod. Recomendamos passar para a identidade da carga de trabalho para sua autenticação, caso esteja usando a identidade do pod. Embora o add-on gerenciado KEDA atualmente não execute a versão 2.15+, ele começará a executá-la na versão prévia do AKS 1.31.

Para obter mais informações sobre como dimensionar seus aplicativos com segurança usando a identidade da carga de trabalho, leia nosso tutorial. Para exibir a política de alteração interruptiva/substituição do KEDA, leia a documentação oficial.

Antes de começar

Observação

Se você estiver usando a ID de carga de trabalho do Microsoft Entra e habilitar o KEDA antes da ID de carga de trabalho, será necessário reiniciar os pods do operador KEDA para que as variáveis de ambiente corretas possam ser injetadas:

  1. Reinicie os pods executando kubectl rollout restart deployment keda-operator -n kube-system.

  2. Obtenha os pods do operador KEDA usando kubectl get pod -n kube-system e localizando os pods que começam com keda-operator.

  3. Verifique a injeção bem-sucedida das variáveis de ambiente executando kubectl describe pod <keda-operator-pod> -n kube-system. Em Environment, você verá os valores de AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE e AZURE_AUTHORITY_HOST.

Instale o complemento KEDA com a CLI do Azure

Para instalar o complemento KEDA, use --enable-keda ao criar ou atualizar um cluster.

Habilitar o complemento KEDA no cluster do AKS

Observação

Embora o KEDA forneça várias opções de personalização, o complemento KEDA atualmente fornece configuração comum básica.

Caso você precise ter configurações personalizadas, edite manualmente os arquivos YAML do KEDA para personalizar a instalação. O Azure não oferece suporte para configurações personalizadas.

Criar um cluster do AKS com o complemento KEDA habilitado

  1. Crie um grupo de recursos usando o comando az group create.

    az group create --name myResourceGroup --location eastus
    
  2. Crie um cluster do AKS usando o comando az aks create e habilite o complemento KEDA usando o sinalizador --enable-keda.

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

Habilitar o complemento KEDA em um cluster existente do AKS

  • Atualize um cluster existente usando o comando az aks update e habilite o complemento KEDA usando o sinalizador --enable-keda.

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

Obter as credenciais para o cluster

  • Obtenha as credenciais do cluster do AKS usando o comando az aks get-credentials.

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

Verificar se o complemento KEDA está instalado no cluster

  • Verifique se o complemento KEDA está instalado no cluster usando o comando az aks show e defina o parâmetro --query como workloadAutoScalerProfile.keda.enabled.

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

    O seguinte exemplo de saída mostra que o complemento KEDA está instalado no cluster:

    true
    

Verificar se o KEDA está sendo executado no cluster

  • Verifique se o complemento KEDA está em execução no cluster usando o comando kubectl get pods.

    kubectl get pods -n kube-system 
    

    A saída do exemplo a seguir mostra que o operador KEDA, o hook de admissões e o servidor de API de métricas estão instalados no 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
    

Verificar a versão do KEDA no cluster

Para verificar a versão do seu KEDA, use kubectl get crd/scaledobjects.keda.sh -o yaml . Por exemplo:

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

A saída de exemplo a seguir mostra a configuração do KEDA na etiqueta 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

Faça o dimensionamento vertical do keda-operator caso esteja enfrentando erros OOMKill

Se os pods do keda-operator estiverem apresentando erros OOMKill, você pode usar o Dimensionador Automático do Pod Vertical (VPA) para ajustar automaticamente os limites de CPU e memória.

  1. Habilite a VPA no cluster do AKS usando o az aks update comando.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-vpa
    
  2. Crie um arquivo chamado keda-operator-vpa.yaml com a seguinte configuração de VPA para direcionar a implantação do 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. Aplique a configuração de VPA ao cluster usando o kubectl apply comando.

    kubectl apply -f keda-operator-vpa.yaml
    

    O VPA ajusta automaticamente as solicitações e os limites de CPU e memória dos pods do keda-operator com base no uso observado.

Desativar o complemento KEDA no cluster do AKS

  • Desabilite o complemento KEDA no cluster usando o comando az aks update com o sinalizador --disable-keda.

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

Próximas etapas

Este artigo mostrou como instalar o complemento KEDA em um cluster do AKS usando a CLI do Azure.

Com o complemento KEDA instalado em seu cluster, você pode implantar um aplicativo de amostra para começar a dimensionar aplicativos.

Para obter informações sobre a solução de problemas do KEDA, confira Solucionar problemas do complemento KEDA (dimensionamento automático controlado por eventos do Kubernetes).

Para saber mais, consulte a documentação do KEDA upstream.