Problemen oplossen met de kubernetes-invoegtoepassing voor automatisch schalen op basis van gebeurtenissen
In dit artikel wordt beschreven hoe u problemen met de invoegtoepassing Kubernetes Event Driven Autoscaling (KEDA) kunt oplossen voor de Microsoft Azure Kubernetes Service (AKS). Wanneer u de KEDA AKS-invoegtoepassing implementeert, kunnen er problemen optreden die zijn gekoppeld aan de configuratie van de automatische schaalaanpassing van toepassingen. Dit artikel helpt u bij het oplossen van fouten en veelvoorkomende problemen die van invloed zijn op de invoegtoepassing, maar die niet worden behandeld in de officiële veelgestelde vragen en handleiding voor probleemoplossing van KEDA.
Voorwaarden
- Het kubectl-hulpprogramma Kubectl van Kubernetes. Als u kubectl wilt installeren met behulp van de Azure CLI, voert u de opdracht az aks install-cli uit.
Ondersteuning voor KEDA-invoegtoepassing
De KEDA-invoegtoepassing volgt een vergelijkbaar ondersteuningsmodel als andere AKS-invoegtoepassingen. Alle Azure KEDA-schaalders worden ondersteund, maar AKS biedt geen ondersteuning voor scalers van derden. Als u problemen ondervindt met scalers van derden, opent u een probleem in de officiële KEDA GitHub-opslagplaats.
Controlelijst voor probleemoplossing
Controleer en los problemen met KEDA-onderdelen op met behulp van de instructies in de volgende secties.
De beschikbare KEDA-versie controleren
U kunt de beschikbare KEDA-versie bepalen met behulp van de opdracht kubectl get :
kubectl get crd/scaledobjects.keda.sh -o custom-columns='APP:.metadata.labels.app\.kubernetes\.io/version'
In de uitvoer van de opdracht wordt de geïnstalleerde versie van KEDA weergegeven:
APP
2.8.1
Zorg ervoor dat de clusterfirewall juist is geconfigureerd
KEDA kan toepassingen mogelijk niet schalen omdat deze niet kan worden gestart.
Wanneer u de operatorlogboeken controleert, ziet u mogelijk foutvermeldingen die lijken op de volgende tekst:
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
In de sectie met metrische server kunt u ontdekken dat KEDA niet kan worden gestart:
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"
Dit scenario betekent waarschijnlijk dat de KEDA-invoegtoepassing niet kan worden gestart vanwege een onjuist geconfigureerde firewall. Als u ervoor wilt zorgen dat KEDA correct wordt uitgevoerd, configureert u de firewall om te voldoen aan de vereiste netwerkregels van Azure Global.
De invoegtoepassing inschakelen voor clusters met zelfbeheerde opensource KEDA-installaties
In theorie kunt u KEDA vaak installeren, ook al staat Kubernetes toe dat slechts één metrische server wordt geïnstalleerd. We raden echter niet aan om meerdere installaties te installeren, omdat slechts één installatie zou werken.
Wanneer de KEDA-invoegtoepassing is geïnstalleerd op een AKS-cluster, wordt de vorige installatie van opensource KEDA overschreven en wordt de invoegtoepassing overgenomen. In dit scenario gaat de aanpassing en configuratie van de zelf-geïnstalleerde KEDA-implementatie verloren en wordt deze niet meer toegepast.
Hoewel de bestaande automatische schaalaanpassing mogelijk blijft werken, ontstaat er een risico. De KEDA-invoegtoepassing wordt anders geconfigureerd en biedt geen ondersteuning voor functies zoals beheerde identiteit. Om fouten tijdens de installatie te voorkomen, raden we u aan bestaande KEDA-installaties te verwijderen voordat u de KEDA-invoegtoepassing inschakelt.
Voer de kubectl get
opdracht uit om te bepalen welke metrische adapter wordt gebruikt door KEDA:
kubectl get APIService/v1beta1.external.metrics.k8s.io -o custom-columns='NAME:.spec.service.name,NAMESPACE:.spec.service.namespace'
Een overzicht toont de service en naamruimte die Kubernetes gebruikt om metrische gegevens op te halen:
NAME NAMESPACE
keda-operator-metrics-apiserver kube-system
Waarschuwing
Als de naamruimte niet kube-system
is, wordt de AKS-invoegtoepassing genegeerd en wordt er een andere metrische server gebruikt.
KEDA-operatorpods opnieuw starten wanneer de workloadidentiteit niet correct wordt geïnjecteerd
Als u Microsoft Entra Workload-ID gebruikt en KEDA inschakelt voordat de Workload-ID wordt gebruikt, moet u de KEDA-operatorpods opnieuw starten. Dit zorgt ervoor dat de juiste omgevingsvariabelen worden geïnjecteerd. Hiervoor volgt u deze stappen:
Start de pods opnieuw door de volgende opdracht uit te voeren:
kubectl rollout restart deployment keda-operator -n kube-system
Haal KEDA-operatorpods op door de volgende opdracht uit te voeren en zoek pods met namen die beginnen met 'keda-operator'.
kubectl get pod -n kube-system
Voer de volgende opdracht uit om te controleren of de omgevingsvariabelen zijn geïnjecteerd:
kubectl describe pod <keda-operator-pod-name> -n kube-system
Als de variabelen zijn geïnjecteerd, ziet u waarden voor
AZURE_TENANT_ID
,AZURE_FEDERATED_TOKEN_FILE
enAZURE_AUTHORITY_HOST
in de sectie Omgeving .
Disclaimerinformatie van derden
De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.