Instalowanie dodatku do automatycznego skalowania opartego na zdarzeniach platformy Kubernetes (KEDA) przy użyciu interfejsu wiersza polecenia platformy Azure

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.

W tym artykule pokazano, jak zainstalować dodatek Kubernetes Event-driven Autoscaling (KEDA) w usłudze Azure Kubernetes Service (AKS) przy użyciu narzędzia Azure CLI.

Ważne

Wersja Kubernetes klastra określa, która wersja KEDA zostanie zainstalowana na twoim klastrze AKS. Aby zobaczyć, która wersja KEDA jest mapowana na każdą wersję usługi AKS, zobacz kolumnę Dodatki zarządzane przez AKStabeli wersji składnika Kubernetes.

W przypadku wersji ogólnodostępnych (GA) platformy Kubernetes usługa AKS oferuje pełną obsługę odpowiedniej podwersji KEDA w tabeli. Wersje zapoznawcze platformy Kubernetes i najnowsza poprawka KEDA są częściowo objęte pomocą techniczną dla klientów, świadczoną 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:

Uwaga

Usługa KEDA w wersji 2.15 lub nowszej wprowadza zmianę niekompatybilną, która usuwa obsługę tożsamości zasobnika. Zalecamy użycie "workload identity" do celów uwierzytelniania, jeśli używasz "pod identity". Chociaż dodatek zarządzany przez usługę KEDA nie jest obecnie uruchomiony w wersji 2.15 lub nowszej, rozpocznie uruchamianie go w wersji zapoznawczej usługi AKS w wersji 1.31.

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ą KEDA dotyczącą zmian niekompatybilnych wstecz/zaprzestania użytkowania, przeczytaj ich dokumentację oficjalną.

Zanim rozpoczniesz

Uwaga

Jeśli używasz Tożsamość obciążeń Microsoft Entra i włączysz KEDA przed Workload ID, musisz ponownie uruchomić zasobniki operatora KEDA, aby można było wstrzyknąć odpowiednie zmienne środowiskowe:

  1. Uruchom ponownie pody, 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ź pomyślne wstrzyknięcie zmiennych środowiskowych, uruchamiając polecenie kubectl describe pod <keda-operator-pod> -n kube-system. Pod Environment powinna zostać wyświetlona wartość dla AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE i AZURE_AUTHORITY_HOST.

Instalowanie dodatku KEDA za pomocą interfejsu wiersza polecenia platformy Azure

Aby zainstalować dodatek KEDA, użyj polecenia --enable-keda podczas tworzenia lub aktualizowania klastra.

Włącz dodatek KEDA w Twoim klastrze AKS

Uwaga

Chociaż KEDA oferuje różne opcje dostosowywania, dodatek KEDA obecnie zapewnia podstawową typową konfigurację.

Jeśli potrzebujesz konfiguracji niestandardowych, możesz ręcznie edytować pliki YAML KEDA, aby dostosować instalację. Platforma Azure nie oferuje obsługi konfiguracji niestandardowych.

Tworzenie nowego klastra AKS z włączonym dodatkiem KEDA

  1. Utwórz grupę zasobów przy użyciu az group create polecenia .

    az group create --name myResourceGroup --location eastus
    
  2. Utwórz nowy klaster usługi AKS przy użyciu az aks create polecenia i włącz dodatek KEDA przy użyciu flagi --enable-keda .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-keda \
        --generate-ssh-keys
    

Włącz dodatek KEDA w istniejącym klastrze AKS

  • Zaktualizuj istniejący klaster przy użyciu az aks update polecenia i włącz dodatek KEDA przy użyciu flagi --enable-keda .

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-keda 
    

Uzyskaj poświadczenia dla swojego klastra

  • Pobierz poświadczenia dla klastra usługi AKS za pomocą polecenia az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Sprawdź, czy dodatek KEDA jest zainstalowany w klastrze

  • Sprawdź, czy dodatek KEDA jest zainstalowany w klastrze przy użyciu az aks show polecenia i ustaw --query parametr na workloadAutoScalerProfile.keda.enabled.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query "workloadAutoScalerProfile.keda.enabled" 
    

    Następujące przykładowe dane wyjściowe pokazują, że dodatek KEDA jest zainstalowany w klastrze:

    true
    

Sprawdź, czy usługa KEDA jest uruchomiona w klastrze

  • Sprawdź, czy dodatek KEDA jest uruchomiony w klastrze przy użyciu kubectl get pods polecenia .

    kubectl get pods -n kube-system 
    

    Następujące przykładowe dane wyjściowe pokazują, że operator KEDA, hook przyjęć i serwer interfejsu API metryk zostały zainstalowane na klastrze.

    keda-admission-webhooks-**********-2n9zl           1/1     Running   0            3d18h
    keda-admission-webhooks-**********-69dkg           1/1     Running   0            3d18h
    keda-operator-*********-4hb5n                      1/1     Running   0            3d18h
    keda-operator-*********-pckpx                      1/1     Running   0            3d18h
    keda-operator-metrics-apiserver-**********-gqg4s   1/1     Running   0            3d18h
    keda-operator-metrics-apiserver-**********-trfcb   1/1     Running   0            3d18h
    

Zweryfikuj wersję KEDA w swoim klastrze

Aby sprawdzić wersję KEDA, użyj polecenia kubectl get crd/scaledobjects.keda.sh -o yaml . Na przykład:

kubectl get crd/scaledobjects.keda.sh -o yaml 

Następujące przykładowe dane wyjściowe pokazują konfigurację KEDA w etykiecie app.kubernetes.io/version :

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.0
    meta.helm.sh/release-name: aks-managed-keda
    meta.helm.sh/release-namespace: kube-system
  creationTimestamp: "2023-08-09T15:58:56Z"
  generation: 1
  labels:
    app.kubernetes.io/component: operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: keda-operator
    app.kubernetes.io/part-of: keda-operator
    app.kubernetes.io/version: 2.10.1
    helm.toolkit.fluxcd.io/name: keda-adapter-helmrelease
    helm.toolkit.fluxcd.io/namespace: 64d3b6fd3365790001260647
  name: scaledobjects.keda.sh
  resourceVersion: "1421"
  uid: 29109c8c-638a-4bf5-ac1b-c28ad9aa11fa
spec:
  conversion:
    strategy: None
  group: keda.sh
  names:
    kind: ScaledObject
    listKind: ScaledObjectList
    plural: scaledobjects
    shortNames:
    - so
    singular: scaledobject
  scope: Namespaced
  # Redacted due to length

Skaluj w pionie operatora keda, jeśli występują błędy OOMKill

Jeśli w zasobnikach keda-operator występują błędy OOMKill, możesz użyć narzędzia Vertical Pod Autoscaler (VPA), aby automatycznie dostosować limity procesora i pamięci.

  1. Włącz usługę VPA w klastrze AKS przy użyciu polecenia az aks update.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-vpa
    
  2. Utwórz plik o nazwie keda-operator-vpa.yaml z następującą konfiguracją VPA, aby skierować wdrożenie operatora keda.

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: keda-operator-vpa
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind: Deployment
        name: keda-operator
      updatePolicy:
        updateMode: "InPlaceOrRecreate"
    
  3. Zastosuj konfigurację VPA do swojego klastra za pomocą polecenia kubectl apply.

    kubectl apply -f keda-operator-vpa.yaml
    

    VPA automatycznie dostosowuje żądania CPU i pamięci oraz limity dla podów keda-operator na podstawie zaobserwowanego użycia.

Wyłącz dodatek KEDA na swoim klastrze AKS

  • Wyłącz dodatek KEDA w klastrze przy użyciu polecenia az aks update z flagą --disable-keda.

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --disable-keda 
    

Następne kroki

W tym artykule pokazano, jak zainstalować dodatek KEDA w klastrze usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure.

Za pomocą dodatku KEDA zainstalowanego w klastrze możesz wdrożyć przykładową aplikację , aby rozpocząć skalowanie aplikacji.

Aby uzyskać informacje na temat rozwiązywania problemów z usługą KEDA, zobacz Rozwiązywanie problemów z dodatkiem Kubernetes Event-driven Autoscaling (KEDA).

Aby dowiedzieć się więcej, przejrzyj dokumentację upstream KEDA.