Uproszczone skalowanie automatyczne aplikacji za pomocą dodatku Kubernetes Event-driven Autoscaling (KEDA) w Azure Kubernetes Service (AKS)

Ważne

Dodatek KEDA dla usługi AKS nie obsługuje obecnie modyfikowania prośb dotyczących CPU ani limitów oraz innych wartości Helm dla serwera metryk lub operatora. Pamiętaj o tym ograniczeniu podczas korzystania z dodatku. Jeśli masz jakiekolwiek pytania, możesz skontaktować się tutaj.

Kubernetes Event-driven Autoscaling (KEDA) to wyspecjalizowany i lekki komponent, który upraszcza automatyczne skalowanie aplikacji. Jest to projekt Cloud Native Computing Foundation (CNCF) Graduate. Usługa KEDA używa automatycznego skalowania opartego na zdarzeniach do skalowania aplikacji w celu zaspokojenia zapotrzebowania w zrównoważony i ekonomiczny sposób z skalowaniem do zera.

W przypadku większości obciążeń produkcyjnych AKS Automatic jest zalecanym domyślnym rozwiązaniem AKS. Usługa AKS Automatic jest domyślnie gotowa do użycia w środowisku produkcyjnym i zawiera w klastrze wstępnie skonfigurowane narzędzie KEDA. Jeśli używasz usługi AKS Standard, możesz włączyć usługę KEDA przy użyciu zarządzanego dodatku KEDA.

Aby dowiedzieć się więcej o usłudze AKS Automatic, zobacz Co to jest Azure Kubernetes Service (AKS) Automatic?

Uwaga / Notatka

Usługa KEDA w wersji 2.15 lub nowszej wprowadza zmianę niekompatybilną, która usuwa obsługę tożsamości zasobnika. Zalecamy przejście na tożsamość roboczą w celu uwierzytelniania, jeśli używasz tożsamości poda. Chociaż zarządzany dodatek KEDA obecnie nie działa w wersji KEDA 2.15+, zacznie on działać w wersji KEDA 2.15+ w wersji zapoznawczej AKS 1.32.

Aby uzyskać więcej informacji na temat bezpiecznego skalowania aplikacji przy użyciu tożsamości obciążenia, przeczytaj nasz samouczek. Aby zapoznać się z polityką zmian niekompatybilnych i wycofywania w KEDA, przeczytaj oficjalną dokumentację.

KEDA w usłudze AKS Automatic i AKS Standard

Usługa KEDA jest dostępna w obu trybach klastra usługi AKS, ale ścieżka konfiguracji jest inna:

  • AKS Automatic: KEDA jest wstępnie skonfigurowana i gotowa do użycia.
  • AKS Standard: Włącz KEDA, aktywując zarządzany dodatek AKS.

W przypadku większości scenariuszy produkcyjnych zacznij od usługi AKS Automatic, aby używać domyślnych ustawień gotowych do produkcji i zmniejszyć nakład pracy związany z zarządzaniem klastrem.

Architektura

Usługa KEDA udostępnia dwa główne składniki:

  • Operator KEDA umożliwia użytkownikom końcowym skalowanie obciążeń w zakresie od 0 do N instancji z obsługą wdrożeń, zadań, Jobs Kubernetes lub dowolnego zasobu niestandardowego definiującego StatefulSets zasób podrzędny.
  • Serwer metryk udostępnia metryki zewnętrzne dla narzędzia Horizontal Pod Autoscaler (HPA) w Kubernetes, umożliwiając automatyczne skalowanie, na przykład w przypadku komunikatów w temacie platformy Kafka lub liczby zdarzeń w centrum zdarzeń platformy Azure. Ze względu na ograniczenia nadrzędne, KEDA musi być jedynym zainstalowanym adapterem metryk zewnętrznych.

Diagram przedstawiający architekturę usługi KEDA i sposób rozszerzania platformy Kubernetes.

Dowiedz się więcej o sposobie działania KEDA w oficjalnej dokumentacji KEDA.

Instalacja i włączanie

Automatyczne usługi AKS

Usługa KEDA jest wstępnie skonfigurowana w usłudze AKS Automatic. Nie jest wymagany żaden oddzielny krok instalacji dodatku KEDA.

AKS Standard

Włącz usługę KEDA w usłudze AKS Standard przy użyciu jednej z następujących metod:

Zarządzany dodatek KEDA zapewnia w pełni obsługiwaną instalację KEDA zintegrowaną z usługą AKS.

Możliwości i funkcje

Usługa KEDA oferuje następujące możliwości i funkcje:

  • Skaluj obciążenia do zera, gdy popyt spada.
  • Skaluj obciążenia aplikacji, aby sprostać zapotrzebowaniu, przy użyciu modułów skalujących KEDA platformy Azure.
  • Automatycznie skaluj aplikacje za pomocą ScaledObjects, na przykład wdrożenia, StatefulSets lub dowolnego zasobu niestandardowego, który definiuje zasób podrzędny /scale.
  • Automatyczne skalowanie obciążeń podobnych do zadań przy użyciu polecenia ScaledJobs.
  • Korzystaj z zabezpieczeń klasy produkcyjnej, oddzielając uwierzytelnianie na potrzeby automatycznego skalowania od obciążeń roboczych.
  • Użyj własnego zewnętrznego skalera do niestandardowej logiki automatycznego skalowania.
  • Integracja z Tożsamość obciążeń Microsoft Entra na potrzeby uwierzytelniania.

W usłudze AKS Automatic domyślnie uzyskujesz te możliwości automatycznego skalowania opartego na zdarzeniach, ponieważ klaster jest wstępnie skonfigurowany przy użyciu usługi KEDA.

Uwaga / Notatka

Jeśli planujesz używać tożsamości obciążenia w usłudze AKS Standard, włącz tożsamość obciążenia przed włączeniem dodatku KEDA.

Wskazówki dotyczące produkcji

Skorzystaj z tych wskazówek, aby wybrać tryb klastra:

  • Wybierz AKS Automatic, gdy chcesz użyć domyślnego środowiska gotowego do produkcji z wstępnie skonfigurowaną usługą KEDA.
  • Wybierz usługę AKS Standard, jeśli potrzebujesz bardziej szczegółowego dostosowywania na poziomie klastra i jawnego zarządzania dodatkami.
  • Użyj KEDA w dowolnym z trybów do automatycznego skalowania obciążeń na podstawie zdarzeń.

Ograniczenia dodatku

Dodatek KEDA AKS ma następujące ograniczenia:

  • Dodatek HTTP do rozszerzenia KEDA (wersja zapoznawcza) do skalowania obciążeń HTTP nie jest instalowany razem z rozszerzeniem, ale można go wdrożyć oddzielnie.
  • Zewnętrzny moduł skalowania rozszerzenia KEDA dla usługi Azure Cosmos DB do skalowania na podstawie zestawienia zmian usługi Azure Cosmos DB nie jest instalowany razem z rozszerzeniem, ale można go wdrożyć oddzielnie.
  • W klastrze Kubernetes dozwolony jest tylko jeden zewnętrzny serwer metryk. Ze względu na to dodatek KEDA powinien być jedynym zewnętrznym serwerem metryk wewnątrz klastra.
    • Wiele instalacji KEDA nie jest obsługiwanych
  • Nie zaleca się łączenia KEDA ScaledObject z narzędziem Horizontal Pod Autoscaler (HPA) w celu skalowania tego samego obciążenia. Współzawodniczą ze sobą, ponieważ KEDA używa narzędzia Horizontal Pod Autoscaler (HPA) w tle, co powoduje dziwne działanie skalowania.
    • Jeśli najpierw zostanie utworzona usługa HPA, następnie spróbuje się utworzyć KEDA ScaledObject, to KEDA ScaledObject nie zostanie utworzona.
    • Jeśli najpierw zostanie utworzona KEDA ScaledObject, a następnie HPA, tworzenie HPA nie zostanie zablokowane.

Aby uzyskać ogólne pytania dotyczące KEDA, zalecamy zapoznanie się z omówieniem często zadawanych pytań.

Uwaga / Notatka

Jeśli korzystasz z Tożsamości obciążeń Microsoft Entra i włączysz funkcję KEDA przed Tożsamością obciążeń Microsoft Entra, musisz ponownie uruchomić zasobniki operatora KEDA, aby można było wstrzyknąć odpowiednie zmienne środowiskowe:

  1. Uruchom ponownie zasobniki, uruchamiając polecenie kubectl rollout restart deployment keda-operator -n kube-system.

  2. Uzyskaj zasobniki operatorów KEDA przy użyciu kubectl get pod -n kube-system i znajdź zasobniki rozpoczynające się od keda-operator.

  3. Sprawdź poprawność wstrzyknięcia zmiennych środowiskowych, uruchamiając kubectl describe pod <keda-operator-pod> -n kube-system. Pod Environment powinny być widoczne wartości dla AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE i AZURE_AUTHORITY_HOST.

Obsługiwane wersje platform Kubernetes i KEDA

Wersja Kubernetes w twoim klastrze określa, którą wersję KEDA zainstalowano w klastrze Azure Kubernetes Service (AKS). Aby zobaczyć, która wersja KEDA jest przypisana do każdej wersji AKS, zobacz kolumnę AKS managed add-ons w tabeli wersji składników Kubernetes.

W przypadku wersji GA platformy Kubernetes usługa AKS oferuje pełną obsługę odpowiadającej wersji pomocniczej KEDA wymienionej w tabeli. Wersje zapoznawcze Kubernetes i najnowsza poprawka KEDA są częściowo objęte pomocą techniczną dla klientów, oferowaną na zasadzie najlepszych starań. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej: