Delen via


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

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-systemis, 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:

  1. Start de pods opnieuw door de volgende opdracht uit te voeren:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. 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
    
  3. 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_FILEen AZURE_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.