Solucionar problemas de complemento de Dimensionamento automático controlado por eventos do Kubernetes

Este artigo discute como solucionar problemas do complemento KEDA (Dimensionamento automático controlado por eventos do Kubernetes) para o AKS (Serviço de Kubernetes do Azure). Ao implantar o complemento de KEDA do AKS, você pode ter problemas que são associados à configuração do dimensionamento automático do aplicativo. Este artigo irá ajudá-lo a solucionar erros e resolver problemas comuns que afetam o complemento, mas não são abordados nas perguntas frequentes oficiais do KEDA e no guia de solução de problemas.

Pré-requisitos

Suporte ao complemento KEDA

O complemento KEDA segue um modelo de suporte semelhante a outros complementos do AKS. Há suporte para todos os dimensionadores do Azure KEDA, mas o AKS não dá suporte a dimensionadores de terceiros. Se você encontrar problemas com escaladores de terceiros, abra um problema no repositório oficial do KEDA GitHub.

Lista de verificação de solução de problemas

Verifique e solucione problemas de componentes KEDA usando as instruções nas seções a seguir.

Verifique a versão KEDA disponível

Você pode determinar a versão do KEDA disponível usando o comando kubectl get :

kubectl get crd/scaledobjects.keda.sh -o custom-columns='APP:.metadata.labels.app\.kubernetes\.io/version'

A saída do comando exibe a versão instalada do KEDA:

APP
2.8.1

Verifique se o firewall do cluster está configurado corretamente

O KEDA pode não dimensionar aplicativos com êxito porque não pode ser iniciado.

Ao verificar os logs do operador, você pode encontrar entradas de erro semelhantes ao seguinte texto:

1.6545953013458195e+09 ERROR Failed to get API Group-Resources {"error": "Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"}
sigs.k8s.io/controller-runtime/pkg/cluster.New
/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/cluster/cluster.go:160
sigs.k8s.io/controller-runtime/pkg/manager.New
/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/manager/manager.go:313
main.main
/workspace/main.go:87
runtime.main
/usr/local/go/src/runtime/proc.go:255
1.6545953013459463e+09 ERROR setup unable to start manager {"error": "Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"}
main.main
/workspace/main.go:97
runtime.main
/usr/local/go/src/runtime/proc.go:255

Na seção do servidor de métricas, você pode descobrir que o KEDA não pode ser iniciado:

I0607 09:53:05.297924 1 main.go:147] keda_metrics_adapter "msg"="KEDA Version: 2.7.1"
I0607 09:53:05.297979 1 main.go:148] keda_metrics_adapter "msg"="KEDA Commit: "
I0607 09:53:05.297996 1 main.go:149] keda_metrics_adapter "msg"="Go Version: go1.17.9"
I0607 09:53:05.298006 1 main.go:150] keda_metrics_adapter "msg"="Go OS/Arch: linux/amd64"
E0607 09:53:15.344324 1 logr.go:279] keda_metrics_adapter "msg"="Failed to get API Group-Resources" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344360 1 main.go:104] keda_metrics_adapter "msg"="failed to setup manager" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344378 1 main.go:209] keda_metrics_adapter "msg"="making provider" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344399 1 main.go:168] keda_metrics_adapter "msg"="unable to run external metrics adapter" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"

Esse cenário provavelmente significa que o complemento KEDA não pode ser iniciado devido a um firewall mal configurado. Para garantir que o KEDA seja executado corretamente, configure o firewall para atender às regras de rede globais necessárias do Azure.

Habilitar o complemento para clusters com instalações KEDA de software livre autogerenciadas

Em teoria, você pode instalar o KEDA várias vezes, mesmo que o Kubernetes permita que apenas um servidor de métricas seja instalado. No entanto, não recomendamos várias instalações porque apenas uma instalação funcionaria.

Quando o complemento KEDA for instalado em um cluster do AKS, a instalação anterior do KEDA de software livre será substituída e o complemento assumirá o controle. Nesse cenário, a personalização e a configuração da implantação do KEDA auto-instalada serão perdidas e não serão mais aplicadas.

Embora o dimensionamento automático existente possa continuar operacional, essa situação apresenta um risco. O complemento KEDA será configurado de forma diferente e não dará suporte a recursos como identidade gerenciada. Para evitar erros durante a instalação, recomendamos que você desinstale as instalações existentes do KEDA antes de ativar o complemento KEDA.

Para determinar qual adaptador de métricas é usado pelo KEDA, execute o kubectl get comando:

kubectl get APIService/v1beta1.external.metrics.k8s.io -o custom-columns='NAME:.spec.service.name,NAMESPACE:.spec.service.namespace'

Uma visão geral mostra o serviço e o namespace que o Kubernetes usará para obter métricas:

NAME                              NAMESPACE
keda-operator-metrics-apiserver   kube-system

Aviso

Se o namespace não kube-systemfor, o complemento do AKS está sendo ignorado e outro servidor de métrica está sendo usado.

Como reiniciar pods de operador KEDA quando a identidade da carga de trabalho não é injetada corretamente

Se você estiver usando a ID de carga de trabalho do Microsoft Entra e habilitar o KEDA antes que a ID de carga de trabalho seja usada, reinicie os pods do operador KEDA. Isso garante que as variáveis de ambiente corretas sejam injetadas. Para fazer isso, siga estas etapas:

  1. Reinicie os pods executando o seguinte comando:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. Obtenha pods de operador KEDA executando o comando a seguir e, em seguida, localize pods com nomes que começam com 'keda-operator'.

    kubectl get pod -n kube-system
    
  3. Para verificar se as variáveis de ambiente foram injetadas com êxito, execute o seguinte comando:

    kubectl describe pod <keda-operator-pod-name> -n kube-system
    

    Se as variáveis tiverem sido injetadas com êxito, você deverá ver valores para AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILEe AZURE_AUTHORITY_HOST na seção Ambiente .

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.