Cvičení – nasazení objektu škálování do clusteru Azure Kubernetes Service

Dokončeno

V tomto cvičení nasadíte do clusteru AKS definici vlastního prostředku objektu škálování (CRD). Objekt scaleru obsahuje trigger, který připojí nasazenou aplikaci ke SLUŽBĚ KEDA. Po nasazení do AKS keda monitoruje seznam Redis a vertikálně navýší kapacitu, pokud délka seznamu překročí definovanou prahovou hodnotu, a pokud délka seznamu klesne pod definovanou prahovou hodnotu, vertikálně navýší kapacitu.

ScaledObject přehled manifestu

  • scaleTargetRef: Tato část popisuje, které úlohy KEDA sleduje.

      scaleTargetRef:
        apiVersion: apps/v1                           # Optional. Default: apps/v1
        kind: deployment                              # Optional. Default: Deployment
        name: contoso-microservice                    # Mandatory. Must be in the same namespace as the ScaledObject
        envSourceContainerName: contoso-microservice  # Optional. Default: .spec.template.spec.containers[0]
    
  • minReplicaCount a maxReplicaCount: Tyto atributy určují rozsah replik, které KEDA používá ke škálování. V takovém případě dáte KEDA pokyn, aby škáloval od minimální nuly na maximum 20.

      minReplicaCount: 0            # Optional. Default: 0
      maxReplicaCount: 20           # Optional. Default: 100
    

    Poznámka:

    minReplicaCount: 0 přebírá výchozí počet replik nasazení z jedné na nulu. K tomu dochází, pokud je služba nečinná a nezpracovává žádné události. Pokud v tomto případě nejsou v seznamu Redis žádné položky a služba zůstane nečinná, keDA se škáluje na nulu.

  • advanced: Tato část se vztahuje k pokročilým přizpůsobením KEDA. Příkaz restoreToOriginalReplicaCount KEDA vrátí počet replik do původní hodnoty po událostech vertikálního navýšení kapacity. V tomto případě ji nastavíte na falsehodnotu , která způsobí vertikální snížení kapacity na minReplicaCount hodnotu nuly.

      restoreToOriginalReplicaCount: false        # Optional. Default: false
      horizontalPodAutoscalerConfig:              # Optional. Section to specify HPA related options
        behavior:                                 # Optional. Use to modify HPA's scaling behavior
          scaleDown:
            stabilizationWindowSeconds: 300
            policies:
            - type: Percent
              value: 100
              periodSeconds: 15
    
  • triggers: Tato část používá scalers ke zjištění, jestli má být objekt aktivován nebo deaktivován, a podává vlastní metriky pro konkrétní zdroje událostí. Metrika listLength dává KEDA pokyn, aby vertikálně navýšit kapacitu, když je v seznamu deset položek.

      triggers:
      - type: redis
        metadata:
          # address:                  # Format must be host:port
          passwordFromEnv: REDIS_KEY
          listName: keda              # Required
          listLength: "10"            # Required
          enableTLS: "false"          # optional
          databaseIndex: "0"          # optional
          hostFromEnv: REDIS_HOST
          portFromEnv: REDIS_PORT
    

Další informace naleznete v tématu KEDA Scalers.

Vytvoření manifestu ScaledObject

  1. V Cloud Shellu vytvořte soubor manifestu pro nasazení Kubernetes volaný scaled-object.yaml pomocí touch příkazu:

    touch scaled-object.yaml
    
  2. V Cloud Shellu otevřete integrovaný editor zadáním code ..

  3. scaled-object.yaml Otevřete soubor a přidejte následující část kódu YAML:

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: scaled-contoso
    spec:
      scaleTargetRef:
        apiVersion: apps/v1                             # Optional. Default: apps/v1
        kind: deployment                                # Optional. Default: Deployment
        name: contoso-microservice                      # Mandatory. Must be in the same namespace as the ScaledObject
        envSourceContainerName: contoso-microservice    # Optional. Default: .spec.template.spec.containers[0]
      pollingInterval: 30                               # Optional. Default: 30 seconds
      cooldownPeriod:  120                              # Optional. Default: 300 seconds
      minReplicaCount: 0                                # Optional. Default: 0
      maxReplicaCount: 20                               # Optional. Default: 100
      advanced:                                         # Optional. Section to specify advanced options
        restoreToOriginalReplicaCount: false            # Optional. Default: false
        horizontalPodAutoscalerConfig:                  # Optional. Section to specify HPA related options
          behavior:                                     # Optional. Use to modify HPA's scaling behavior
            scaleDown:
              stabilizationWindowSeconds: 300
              policies:
              - type: Percent
                value: 100
                periodSeconds: 15
      triggers:
      - type: redis
        metadata:
          # address:                  # Format must be host:port
          passwordFromEnv: REDIS_KEY
          listName: keda              # Required
          listLength: "10"            # Required
          enableTLS: "false"          # optional
          databaseIndex: "0"          # optional
          hostFromEnv: REDIS_HOST
          portFromEnv: REDIS_PORT
    
  4. Uložte soubor manifestu (CTRL+S) a zavřete editor(CTRL+Q).

Použití manifestu

  1. Pomocí příkazu nasaďte manifest do clusteru kubectl apply :

    kubectl apply -f ./scaled-object.yaml
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    scaledobject.keda.sh/scaled-contoso created
    
  2. Pomocí příkazu zkontrolujte počet spuštěných podů kubectl get pods :

    kubectl get pods
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu s jedním spuštěným podem:

    NAME                                  READY   STATUS    RESTARTS   AGE
    contoso-microservice-794d98b5-4flvg   1/1     Running   0          2m1s
    
  3. Pravidelně spusťte kubectl get pods příkaz, abyste ověřili, že nasazení škáluje počet podů podle backlogu práce.

    Poznámka:

    Pokud máte nainstalované nástroje Linux, můžete pomocí watch kubectl get pods příkazu zobrazit škálování podů ke zpracování položek seznamu Redis. Pokud ne, můžete použít kubectl get pods -w příkaz.

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

      NAME                                  READY   STATUS    RESTARTS   AGE
      contoso-microservice-794d98b5-4flvg   1/1     Running   0          3m
      contoso-microservice-794d98b5-4jpxp   1/1     Running   0          3m
      contoso-microservice-794d98b5-4lw7b   1/1     Running   0          2m15s
      contoso-microservice-794d98b5-5fqj5   1/1     Running   0          3m
      contoso-microservice-794d98b5-5kdbw   1/1     Running   0          2m15s
    

Po zpracování všech položek a cooldownPeriod vypršení platnosti uvidíte, že počet podů je nula. Důvodem je to, že KEDA odebral všechny spuštěné repliky a nezůstaly žádné položky ke zpracování.