Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sommario
Questo articolo illustra come risolvere i problemi legati al componente aggiuntivo Kubernetes Event-driven Autoscaling (KEDA) per il Microsoft Azure Kubernetes Service (AKS). Quando si distribuisce il componente aggiuntivo KEDA per AKS, è possibile che si verifichino problemi associati alla configurazione del componente di scalabilità automatica dell'applicazione. Questo articolo consente di risolvere gli errori e risolvere i problemi comuni che influiscono sul componente aggiuntivo, ma non sono trattati nella guida ufficiale KEDA di domande frequenti e risoluzione dei problemi.
Prerequisiti
- Lo strumento kubectl di Kubernetes. Per installare kubectl usando l'interfaccia della riga di comando di Azure, eseguire il comando az aks install-cli .
Supporto dei componenti aggiuntivi KEDA
Il componente aggiuntivo KEDA segue un modello di supporto simile ad altri componenti aggiuntivi AKS. Tutti i scaler KEDA di Azure sono supportati, ma AKS non supporta i scaler di terze parti. Se si verificano problemi con i scaler di terze parti, aprire un problema nel repository GitHub KEDA ufficiale.
Elenco di controllo per la risoluzione dei problemi
Verificare e risolvere i problemi dei componenti KEDA seguendo le istruzioni riportate nelle sezioni seguenti.
Controllare la versione KEDA disponibile
È possibile determinare la versione keda disponibile usando il comando kubectl get :
kubectl get crd/scaledobjects.keda.sh -o custom-columns='APP:.metadata.labels.app\.kubernetes\.io/version'
L'output del comando visualizza la versione installata di KEDA:
APP
2.8.1
Assicurarsi che il firewall del cluster sia configurato correttamente
KEDA potrebbe non ridimensionare correttamente le applicazioni perché non riesce ad avviarsi.
Quando si controllano i log degli operatori, è possibile trovare voci di errore simili al testo seguente:
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
Nella sezione server delle metriche è possibile scoprire che KEDA non può iniziare:
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"
Questo scenario significa probabilmente che il componente aggiuntivo KEDA non è in grado di avviare a causa di un firewall non configurato correttamente. Per assicurarsi che KEDA venga eseguito correttamente, configurare il firewall in modo che soddisfi le regole di rete richieste a livello globale di Azure.
Abilitare il componente aggiuntivo per i cluster con installazioni KEDA open source autogestte
In teoria, è possibile installare KEDA più volte, anche se Kubernetes consente l'installazione di un solo server metrico. Tuttavia, non è consigliabile più installazioni perché solo un'installazione funzionerebbe.
Quando il componente aggiuntivo KEDA viene installato in un cluster del servizio Azure Kubernetes, l'installazione precedente di KEDA open source verrà sostituita e il componente aggiuntivo assumerà il controllo. In questo scenario, la personalizzazione e la configurazione della distribuzione KEDA installata automaticamente andranno perse e non verranno più applicate.
Anche se la scalabilità automatica esistente potrebbe continuare a essere operativa, questa situazione comporta un rischio. Il componente aggiuntivo KEDA verrà configurato in modo diverso e non supporterà funzionalità come l'identità gestita. Per evitare errori durante l'installazione, è consigliabile disinstallare le installazioni KEDA esistenti prima di abilitare il componente aggiuntivo KEDA.
Per determinare quale adattatore metriche viene usato da KEDA, eseguire il kubectl get comando :
kubectl get APIService/v1beta1.external.metrics.k8s.io -o custom-columns='NAME:.spec.service.name,NAMESPACE:.spec.service.namespace'
Una panoramica mostra il servizio e lo spazio dei nomi che Kubernetes userà per ottenere le metriche:
NAME NAMESPACE
keda-operator-metrics-apiserver kube-system
Avviso
Se lo spazio dei nomi non è kube-system, il componente aggiuntivo AKS viene ignorato e viene usato un altro server di metriche.
Come riavviare i pod dell'operatore KEDA quando la workload identity non viene inserita correttamente
Se si usa ID dei carichi di lavoro di Microsoft Entra e si abilita KEDA prima che venga usato il ID dei carichi di lavoro, è necessario riavviare i pod dell'operatore KEDA. In questo modo si garantisce che vengano inserite le variabili di ambiente corrette. A tale scopo, effettuare i passaggi seguenti:
Riavviare i pod eseguendo il comando seguente:
kubectl rollout restart deployment keda-operator -n kube-systemOttenere i pod dell'operatore KEDA eseguendo il comando seguente e quindi individuare i pod con nomi che iniziano con "keda-operator".
kubectl get pod -n kube-systemPer verificare che le variabili di ambiente siano state inserite correttamente, eseguire il comando seguente:
kubectl describe pod <keda-operator-pod-name> -n kube-systemSe le variabili sono state inserite correttamente, verranno visualizzati i valori per
AZURE_TENANT_ID,AZURE_FEDERATED_TOKEN_FILEeAZURE_AUTHORITY_HOSTnella sezione Ambiente .
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti