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
- Herramienta kubectl de Kubernetes. Para instalar kubectl mediante la CLI de Azure, ejecute el comando az aks install-cli .
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-system
es , 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:
Reinicie los pods ejecutando el siguiente comando:
kubectl rollout restart deployment keda-operator -n kube-system
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
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_FILE
yAZURE_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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de