Övning – Distribuera ett skalningsobjekt till ditt Azure Kubernetes Service-kluster

Slutförd

I den här övningen distribuerar du en anpassad resursdefinition för skalningsobjekt (CRD) till ditt AKS-kluster. Scaler-objektet innehåller utlösaren som ansluter ditt distribuerade program till KEDA. Efter distributionen till AKS övervakar KEDA Redis-listan och skalas upp om listlängden överskrider det definierade tröskelvärdet och skalas ned om listlängden understiger det definierade tröskelvärdet.

ScaledObject manifestöversikt

  • scaleTargetRef: Det här avsnittet beskriver vilken arbetsbelastning KEDA observerar.

      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 och maxReplicaCount: Dessa attribut bestämmer intervallet för repliker som KEDA använder för skalning. I det här fallet instruerar du KEDA att skala från minst noll till högst 20.

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

    Kommentar

    minReplicaCount: 0 tar antalet distributionsstandardrepliker från ett till noll. Detta inträffar om tjänsten är inaktiv och inte bearbetar några händelser. I det här fallet, om det inte finns några objekt i Redis-listan och tjänsten förblir inaktiv, skalar KEDA till noll.

  • advanced: Det här avsnittet handlar om avancerade anpassningar av KEDA. restoreToOriginalReplicaCount Instruerar KEDA att returnera antalet repliker till det ursprungliga värdet efter uppskalningshändelser. I det här fallet anger du det till false, vilket gör att en skalning ned till minReplicaCount värdet noll.

      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: Det här avsnittet används scalers för att identifiera om objektet ska aktiveras eller inaktiveras och mata in anpassade mått för specifika händelsekällor. Måttet listLength instruerar KEDA att skala upp när det finns tio objekt i listan.

      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
    

Mer information finns i KEDA-skalare.

Skapa manifestet ScaledObject

  1. I Cloud Shell skapar du en manifestfil för Kubernetes-distributionen med scaled-object.yaml touch kommandot :

    touch scaled-object.yaml
    
  2. Öppna det integrerade redigeringsprogrammet i Cloud Shell genom att skriva code .

  3. scaled-object.yaml Öppna filen och lägg till följande kodavsnitt i 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. Spara manifestfilen (CTRL + S) och stäng redigeraren(CTRL + Q).

Tillämpa manifestet

  1. Distribuera manifestet till klustret med hjälp av kubectl apply kommandot :

    kubectl apply -f ./scaled-object.yaml
    

    Dina utdata bör se ut ungefär som följande exempelutdata:

    scaledobject.keda.sh/scaled-contoso created
    
  2. Kontrollera antalet poddar som körs med kommandot kubectl get pods :

    kubectl get pods
    

    Dina utdata bör se ut ungefär som i följande exempelutdata, där en podd körs:

    NAME                                  READY   STATUS    RESTARTS   AGE
    contoso-microservice-794d98b5-4flvg   1/1     Running   0          2m1s
    
  3. Kör kommandot regelbundet kubectl get pods för att kontrollera att distributionen skalar antalet poddar enligt kvarvarande arbete.

    Kommentar

    Om du har installerat Linux-verktygsklockan watch kubectl get pods kan du använda kommandot för att se poddskalan för att bearbeta Redis-listobjekten. Annars kan du använda kubectl get pods -w kommandot .

    Dina utdata bör se ut ungefär som följande exempelutdata:

      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
    

När alla objekt har bearbetats och cooldownPeriod upphör att gälla ser du att antalet poddar är noll. Detta beror på att KEDA tog bort alla repliker som körs och inte har några objekt kvar att bearbeta.