Dela via


Felsök Kubernetes add-on för händelsedriven automatisk skalning

I den här artikeln beskrivs hur du felsöker Kubernetes add-on för händelsedriven automatisk skalning (KEDA) till Microsoft Azure Kubernetes Service (AKS). När du distribuerar KEDA AKS add-on kan det uppstå problem som är associerade med konfigurationen av appens autoskalning. Den här artikeln hjälper dig att felsöka fel och lösa vanliga problem som påverkar add-on, men som inte beskrivs i officiella vanliga frågor och svar om KEDA och felsökningsguiden.

Förutsättningar

Stöd för KEDA add-on

KEDA-tillägget följer en liknande supportmodell som andra AKS-tillägg. Alla Azure KEDA-skalare stöds, men AKS stöder inte 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 startas.

När du kontrollerar operatorloggarna kan det finnas 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 Azure Global-nätverksregler som krävs.

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 har installerats 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å ett annat sätt och stöder inte 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 den tjänst och namnrymd 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-operatorpoddar när arbetsbelastningsidentiteten inte matas in korrekt

Om du använder Microsoft Entra-arbetsbelastnings-ID och aktiverar KEDA innan arbetsbelastnings-ID:t används måste du starta om KEDA-operatörspoddarna. Detta säkerställer att rätt miljövariabler matas in. För att göra detta följer du stegen nedan:

  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 matats in genom att köra följande kommando:

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

    Om variablerna har matats in bör du se värden 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.