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
- A ferramenta kubectl do Kubernetes. Para instalar o kubectl usando a CLI do Azure, execute o comando az aks install-cli.
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-system
for, 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:
Reinicie os pods executando o seguinte comando:
kubectl rollout restart deployment keda-operator -n kube-system
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
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_FILE
eAZURE_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.