Risolvere i problemi del componente aggiuntivo di scalabilità automatica guidata dagli eventi kubernetes
Questo articolo illustra come risolvere i problemi del componente aggiuntivo di scalabilità automatica guidata dagli eventi Kubernetes (KEDA) al servizio Azure Kubernetes (Microsoft servizio Azure Kubernetes). Quando si distribuisce il componente aggiuntivo KEDA del servizio Azure Kubernetes, è 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 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 del servizio Azure Kubernetes. Tutti i scaler KEDA di Azure sono supportati, ma il servizio Azure Kubernetes non supporta 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 è possibile avviarla.
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 servizio Azure Kubernetes viene ignorato e viene usato un altro server di metriche.
Come riavviare i pod dell'operatore KEDA quando l'identità del carico di lavoro 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-system
Ottenere 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-system
Per verificare che le variabili di ambiente siano state inserite correttamente, eseguire il comando seguente:
kubectl describe pod <keda-operator-pod-name> -n kube-system
Se le variabili sono state inserite correttamente, verranno visualizzati i valori per
AZURE_TENANT_ID
,AZURE_FEDERATED_TOKEN_FILE
eAZURE_AUTHORITY_HOST
nella 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
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.