Felsöka kubernetes händelsedriven autoskalningstillägg

Den här artikeln beskriver hur du felsöker tillägget Kubernetes Event-driven Autoscaling (KEDA) till Microsoft Azure Kubernetes Service (AKS). När du distribuerar KEDA AKS-tillägget kan det uppstå problem som är associerade med konfigurationen av programmets autoskalning. Den här artikeln hjälper dig att felsöka fel och lösa vanliga problem som påverkar tillägget, men som inte beskrivs i de officiella vanliga frågorna och felsökningsguiden för KEDA.

Förutsättningar

Stöd för KEDA-tillägg

KEDA-tillägget följer en liknande supportmodell som andra AKS-tillägg. Alla Azure KEDA-skalare stöds, men AKS har inte stöd för skalning från tredje part. Om du stöter på problem med skalare från tredje part öppnar du ett problem på den officiella KEDA GitHub-lagringsplatsen.

Checklista för felsökning

Verifiera och felsöka KEDA-komponenter med hjälp av anvisningarna i följande avsnitt.

Kontrollera den tillgängliga KEDA-versionen

Du kan fastställa den tillgängliga KEDA-versionen med hjälp av kommandot kubectl get :

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

Kommandoutdata visar den installerade versionen av KEDA:

APP
2.8.1

Kontrollera att klusterbrandväggen är korrekt konfigurerad

KEDA kanske inte skalar program korrekt eftersom det inte kan starta.

När du kontrollerar operatorloggarna kan du hitta felposter som liknar följande text:

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

I avsnittet måttserver kanske du upptäcker att KEDA inte kan starta:

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"

Det här scenariot innebär förmodligen att KEDA-tillägget inte kan starta på grund av en felkonfigurerad brandvägg. För att säkerställa att KEDA körs korrekt konfigurerar du brandväggen så att den uppfyller de Nätverksregler som krävs för Azure Global.

Aktivera tillägget för kluster med självhanterade KEDA-installationer med öppen källkod

I teorin kan du installera KEDA många gånger, även om Kubernetes endast tillåter att en måttserver installeras. Vi rekommenderar dock inte flera installationer eftersom endast en installation fungerar.

När KEDA-tillägget är installerat i ett AKS-kluster åsidosätts den tidigare installationen av KEDA med öppen källkod och tillägget tar över. I det här scenariot går anpassningen och konfigurationen av den självinstallerade KEDA-distributionen förlorad och tillämpas inte längre.

Även om den befintliga autoskalningen kan fortsätta att fungera medför den här situationen en risk. KEDA-tillägget konfigureras på olika sätt och har inte stöd för funktioner som hanterad identitet. För att förhindra fel under installationen rekommenderar vi att du avinstallerar befintliga KEDA-installationer innan du aktiverar KEDA-tillägget.

Kör kommandot för att avgöra vilket måttkort som används av KEDA kubectl get :

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

En översikt visar tjänsten och namnområdet som Kubernetes använder för att hämta mått:

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

Varning

Om namnområdet inte kube-systemär ignoreras AKS-tillägget och en annan måttserver används.

Så här startar du om KEDA-operatörspoddar när arbetsbelastningsidentiteten inte matas in korrekt

Om du använder Microsoft Entra Workload ID och aktiverar KEDA innan Workload ID används måste du starta om KEDA-operatörspoddarna. Detta säkerställer att rätt miljövariabler matas in. Gör så här:

  1. Starta om poddarna genom att köra följande kommando:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. Hämta KEDA-operatorpoddar genom att köra följande kommando och leta sedan upp poddar med namn som börjar med "keda-operator".

    kubectl get pod -n kube-system
    
  3. Kontrollera att miljövariablerna har injicerats genom att köra följande kommando:

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

    Om variablerna har injicerats bör du se värdena för AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILEoch AZURE_AUTHORITY_HOST i avsnittet Miljö .

Ansvarsfriskrivning för information från tredje part

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.