Compartir a través de


Solución de problemas del complemento de escalado automático controlado por eventos de Kubernetes

En este artículo se describe cómo solucionar problemas del complemento de escalado automático controlado por eventos (KEDA) de Kubernetes para Microsoft Azure Kubernetes Service (AKS). Al implementar el complemento DE AKS de KEDA, es posible que experimente problemas asociados a la configuración del escalador automático de aplicaciones. Este artículo le ayudará a solucionar errores y resolver problemas comunes que afectan al complemento, pero que no se tratan en la guía oficial de preguntas frecuentes y solución de problemas de KEDA.

Requisitos previos

Compatibilidad con complementos de KEDA

El complemento KEDA sigue un modelo de compatibilidad similar al de otros complementos de AKS. Se admiten todos los escaladores DE KEDA de Azure , pero AKS no admite escaladores de terceros. Si tiene problemas con escaladores de terceros, abra un problema en el repositorio oficial de GitHub de KEDA.

Lista de comprobación para la solución de problemas

Compruebe y solucione los problemas de los componentes de KEDA mediante las instrucciones de las secciones siguientes.

Comprobación de la versión de KEDA disponible

Puede determinar la versión de KEDA disponible mediante el comando kubectl get :

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

La salida del comando muestra la versión instalada de KEDA:

APP
2.8.1

Asegúrese de que el firewall del clúster está configurado correctamente

Es posible que KEDA no escale correctamente las aplicaciones porque no se puede iniciar.

Al comprobar los registros del operador, es posible que encuentre entradas de error similares al texto siguiente:

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

En la sección del servidor de métricas, es posible que descubra que KEDA no puede 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"

Este escenario probablemente significa que el complemento KEDA no puede iniciarse debido a un firewall mal configurado. Para asegurarse de que KEDA se ejecuta correctamente, configure el firewall para que cumpla las reglas de red necesarias para Azure Global.

Habilitación del complemento para clústeres con instalaciones de KEDA de código abierto autoadministrados

En teoría, puede instalar KEDA muchas veces, aunque Kubernetes solo permita instalar un servidor de métricas. Sin embargo, no se recomiendan varias instalaciones porque solo funcionaría una instalación.

Cuando el complemento KEDA está instalado en un clúster de AKS, se invalidará la instalación anterior de KEDA de código abierto y el complemento asumirá el control. En este escenario, se perderá la personalización y configuración de la implementación de KEDA autoinstalada y ya no se aplicará.

Aunque el escalado automático existente podría seguir siendo operativo, esta situación supone un riesgo. El complemento KEDA se configurará de forma diferente y no admitirá características como la identidad administrada. Para evitar errores durante la instalación, se recomienda desinstalar las instalaciones de KEDA existentes antes de habilitar el complemento KEDA.

Para determinar qué adaptador de métricas usa KEDA, ejecute el kubectl get comando :

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

Una introducción muestra el servicio y el espacio de nombres que Kubernetes usará para obtener métricas:

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

Advertencia

Si el espacio de nombres no kube-systemes , se omite el complemento de AKS y se usa otro servidor de métricas.

Cómo reiniciar los pods del operador KEDA cuando la identidad de la carga de trabajo no se inserta correctamente

Si usa Id. de carga de trabajo de Microsoft Entra y habilita KEDA antes de usar la Id. de carga de trabajo, debe reiniciar los pods del operador KEDA. Esto garantiza que se insertan las variables de entorno correctas. Para ello, siga estos pasos:

  1. Reinicie los pods ejecutando el siguiente comando:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. Para obtener los pods del operador KEDA, ejecute el siguiente comando y, a continuación, busque pods con nombres que empiecen por "keda-operator".

    kubectl get pod -n kube-system
    
  3. Para comprobar que las variables de entorno se han insertado correctamente, ejecute el siguiente comando:

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

    Si las variables se han insertado correctamente, debería ver los valores de AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILEy AZURE_AUTHORITY_HOST en la sección Entorno .

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.