Ö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: I det här avsnittet beskrivs 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
    

    Not

    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 återställa antalet repliker till sitt ursprungliga värde efter att det har skalats upp. I det här fallet ställer du in den på falsevilket gör att en nedskalning sker till värdet noll för minReplicaCount.

      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änder 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 Scalers.

Skapa ScaledObject-manifestet

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

    touch scaled-object.yaml
    
  2. Öppna den integrerade redigeraren i Cloud Shell genom att ange code .

  3. Öppna filen scaled-object.yaml 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 kommandot kubectl apply:

    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 hjälp av 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 regelbundet kommandot kubectl get pods för att kontrollera att distribueringen skalar antalet poddar enligt arbetsefterfrågan.

    Not

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

    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.