Rozwiązywanie problemów z dodatkiem Kubernetes Event-driven Autoscaling
W tym artykule omówiono sposób rozwiązywania problemów z dodatkiem Kubernetes Event-driven Autoscaling (KEDA) do usługi Microsoft Azure Kubernetes Service (AKS). Podczas wdrażania dodatku KEDA AKS mogą wystąpić problemy związane z konfiguracją modułu automatycznego skalowania aplikacji. Ten artykuł pomoże w rozwiązywaniu problemów z błędami i rozwiązywaniu typowych problemów, które mają wpływ na dodatek, ale nie zostały omówione w oficjalnym przewodniku rozwiązywania problemów i często zadawanych pytaniach dotyczących dodatku KEDA.
Wymagania wstępne
- Narzędzie Kubernetes kubectl . Aby zainstalować narzędzie kubectl przy użyciu interfejsu wiersza polecenia platformy Azure, uruchom polecenie az aks install-cli.
Pomoc techniczna dla dodatku KEDA
Dodatek KEDA jest zgodny z podobnym modelem obsługi do innych dodatków usługi AKS. Obsługiwane są wszystkie moduły skalowania KEDA platformy Azure, ale usługa AKS nie obsługuje skalowania innych firm. Jeśli wystąpią problemy ze skalerami innych firm, otwórz problem w oficjalnym repozytorium GitHub usługi KEDA.
Lista kontrolna rozwiązywania problemów
Zweryfikuj i rozwiąż problemy ze składnikami KEDA, korzystając z instrukcji w poniższych sekcjach.
Sprawdzanie dostępnej wersji KEDA
Dostępną wersję KEDA można określić za pomocą polecenia kubectl get :
kubectl get crd/scaledobjects.keda.sh -o custom-columns='APP:.metadata.labels.app\.kubernetes\.io/version'
Dane wyjściowe polecenia wyświetla zainstalowaną wersję KEDA:
APP
2.8.1
Upewnij się, że zapora klastra jest poprawnie skonfigurowana
Usługa KEDA może nie zostać pomyślnie skalowana, ponieważ nie można jej uruchomić.
Podczas sprawdzania dzienników operatorów mogą znajdować się wpisy o błędach podobne do następującego tekstu:
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
W sekcji serwer metryk może się okazać, że nie można uruchomić usługi KEDA:
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"
Ten scenariusz prawdopodobnie oznacza, że dodatek KEDA nie może uruchomić się z powodu błędnie skonfigurowanej zapory. Aby upewnić się, że usługa KEDA działa prawidłowo, skonfiguruj zaporę tak, aby spełniała globalne wymagane reguły sieciowe platformy Azure.
Włączanie dodatku dla klastrów z własnymi instalacjami KEDA typu open source
Teoretycznie można zainstalować narzędzie KEDA wiele razy, mimo że platforma Kubernetes umożliwia zainstalowanie tylko jednego serwera metryk. Nie zalecamy jednak wielu instalacji, ponieważ działa tylko jedna instalacja.
Po zainstalowaniu dodatku KEDA w klastrze usługi AKS poprzednia instalacja KEDA typu open source zostanie zastąpiona, a dodatek zostanie przesłonięty. W tym scenariuszu dostosowanie i konfiguracja samodzielnego wdrożenia usługi KEDA zostaną utracone i nie zostaną już zastosowane.
Chociaż istniejące skalowanie automatyczne może nadal działać, taka sytuacja stanowi zagrożenie. Dodatek KEDA zostanie skonfigurowany inaczej i nie będzie obsługiwać funkcji, takich jak tożsamość zarządzana. Aby zapobiec błędom podczas instalacji, zalecamy odinstalowanie istniejących instalacji KEDA przed włączeniem dodatku KEDA.
Aby określić, która karta metryk jest używana przez usługę kubectl get
KEDA, uruchom polecenie:
kubectl get APIService/v1beta1.external.metrics.k8s.io -o custom-columns='NAME:.spec.service.name,NAMESPACE:.spec.service.namespace'
Omówienie przedstawia usługę i przestrzeń nazw, która będzie używana przez platformę Kubernetes do pobierania metryk:
NAME NAMESPACE
keda-operator-metrics-apiserver kube-system
Ostrzeżenie
Jeśli przestrzeń nazw nie kube-system
jest , dodatek usługi AKS jest ignorowany, a używany jest inny serwer metryk.
Jak ponownie uruchomić zasobniki operatora KEDA, gdy tożsamość obciążenia nie jest prawidłowo wstrzykiwana
Jeśli używasz Tożsamość obciążeń Microsoft Entra i włączysz funkcję KEDA przed użyciem Tożsamość obciążeń, musisz ponownie uruchomić zasobniki operatorów KEDA. Zapewnia to wstrzyknięcie prawidłowych zmiennych środowiskowych. W tym celu wykonaj następujące kroki:
Uruchom ponownie zasobniki, uruchamiając następujące polecenie:
kubectl rollout restart deployment keda-operator -n kube-system
Uzyskaj zasobniki operatorów KEDA, uruchamiając następujące polecenie, a następnie znajdź zasobniki o nazwach rozpoczynających się od "keda-operator".
kubectl get pod -n kube-system
Aby sprawdzić, czy zmienne środowiskowe zostały pomyślnie wprowadzone, uruchom następujące polecenie:
kubectl describe pod <keda-operator-pod-name> -n kube-system
Jeśli zmienne zostały pomyślnie wprowadzone, powinny zostać wyświetlone wartości ,
AZURE_TENANT_ID
AZURE_FEDERATED_TOKEN_FILE
iAZURE_AUTHORITY_HOST
w sekcji Środowisko.
Zastrzeżenie dotyczące innych firm
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.