Solucionar problemas do 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 (Microsoft Serviço de Kubernetes do Azure). Ao implantar o suplemento KEDA AKS, você poderá ter problemas associados à configuração do dimensionador automático do aplicativo. Este artigo ajudará você a solucionar erros e resolve problemas comuns que afetam o complemento, mas não são abordados no guia oficial de perguntas frequentes e solução de problemas do KEDA.
Pré-requisitos
- A ferramenta kubernetes kubectl . Para instalar o kubectl usando a CLI do Azure, execute o comando az aks install-cli .
Suporte ao suplemento KEDA
O suplemento KEDA segue um modelo de suporte semelhante a outros complementos do AKS. Todos os dimensionadores KEDA do Azure têm suporte, mas o AKS não dá suporte a scalers de terceiros. Se você encontrar problemas com scalers de terceiros, abra um problema no repositório oficial keda GitHub.
Lista de verificação de solução de problemas
Verifique e solução de problemas de componentes KEDA usando as instruções nas seções a seguir.
Verificar a versão keda disponível
Você pode determinar a versão 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 de comando exibe a versão instalada do KEDA:
APP
2.8.1
Verifique se o firewall de cluster está configurado corretamente
O KEDA pode não escalar aplicativos com êxito porque não pode iniciar.
Quando você marcar os logs do operador, você pode encontrar entradas de erro que se assemelham 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 servidor de métrica, você pode descobrir que o KEDA não pode iniciar:
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 é capaz de iniciar devido a um firewall mal configurado. Para garantir que o KEDA seja executado corretamente, configure o firewall para atender às regras de rede necessárias do Azure Global.
Habilitar o complemento para clusters com instalações keda de código aberto autogerenciadas
Em teoria, você pode instalar o KEDA muitas vezes, embora o Kubernetes permita que apenas um servidor de métrica seja instalado. No entanto, não recomendamos várias instalações porque apenas uma instalação funcionaria.
Quando o suplemento KEDA for instalado em um cluster do AKS, a instalação anterior do KEDA de código aberto será substituída e o complemento assumirá o controle. Nesse cenário, a personalização e a configuração da implantação auto-instalada do KEDA serão perdidas e não serão mais aplicadas.
Embora o dimensionamento automático existente possa continuar operacional, essa situação introduz um risco. O complemento KEDA será configurado de forma diferente e não oferecerá suporte a recursos como identidade gerenciada. Para evitar erros durante a instalação, recomendamos desinstalar instalações keda existentes antes de habilitar 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
estiver , 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 ID de carga de trabalho do Microsoft Entra e habilitar o KEDA antes que o ID de carga de trabalho seja usado, 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 localize pods com nomes começando 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.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários