Rozwiązywanie problemów z dodatkiem Skalowanie automatyczne sterowane zdarzeniami platformy Kubernetes

W tym artykule omówiono sposób rozwiązywania problemów z dodatkiem Skalowanie automatyczne sterowane zdarzeniami platformy Kubernetes (KEDA) do usługi Microsoft Azure Kubernetes Service (AKS). Podczas wdrażania dodatku KEDA AKS mogą wystąpić problemy skojarzone z konfiguracją narzędzia skalowania automatycznego aplikacji. Ten artykuł pomoże Ci rozwiązywać problemy z błędami i rozwiązywać typowe problemy wpływające na dodatek, ale nie są omówione w oficjalnym przewodniku rozwiązywania problemów i często zadawanychpytaniach dotyczących usługi KEDA.

Wymagania wstępne

Obsługa dodatków KEDA

Dodatek KEDA jest zgodny z podobnym modelem obsługi do innych dodatków usługi AKS. Wszystkie skalatory usługi Azure KEDA są obsługiwane, ale usługa AKS nie obsługuje skalerów innych firm. Jeśli wystąpią problemy ze skalatorami innych firm, otwórz problem w oficjalnym repozytorium GitHub KEDA.

Lista kontrolna rozwiązywania problemów

Sprawdź i rozwiąż problemy ze składnikami KEDA, korzystając z instrukcji w poniższych sekcjach.

Sprawdź dostępną wersję 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świetlają zainstalowaną wersję narzędzia KEDA:

APP
2.8.1

Upewnij się, że zapora klastra jest poprawnie skonfigurowana

Funkcja KEDA może nie pomyślnie skalować aplikacji, ponieważ nie może się uruchomić.

Podczas sprawdzania dzienników operatora mogą znajdować się wpisy błędów 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 się uruchomić z powodu błędnie skonfigurowanej zapory. Aby upewnić się, że funkcja KEDA działa prawidłowo, skonfiguruj zaporę w celu spełnienia globalnych reguł sieciowych wymaganych przez platformę Azure.

Włączanie dodatku dla klastrów z samodzielnymi 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łaby tylko jedna instalacja.

Po zainstalowaniu dodatku KEDA w klastrze usługi AKS poprzednia instalacja klucza KEDA typu open source zostanie zastąpiona, a dodatek zostanie przejęty. W tym scenariuszu dostosowanie i konfiguracja samoinstalowanego wdrożenia KEDA zostaną utracone i nie zostaną już zastosowane.

Chociaż istniejące skalowanie automatyczne może nadal działać, sytuacja ta stwarza ryzyko. 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 narzędzie KEDA, uruchom kubectl get 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órych platforma Kubernetes użyje do pobierania metryk:

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

Ostrzeżenie

Jeśli przestrzeń nazw nie kube-systemjest , 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 zostanie prawidłowo wstrzyknięta

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 operatora KEDA. Dzięki temu są wstrzykiwane odpowiednie zmienne środowiskowe. Aby to zrobić, wykonaj następujące kroki.

  1. Uruchom ponownie zasobniki, uruchamiając następujące polecenie:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. Uzyskaj zasobniki operatora 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
    
  3. 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 dla AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILEi AZURE_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 platformy Azure.