Oefening: een schaalobject implementeren in uw Azure Kubernetes Service-cluster

Voltooid

In deze oefening implementeert u een aangepaste resourcedefinitie (CRD) voor schaalobjecten in uw AKS-cluster. Het scaler-object bevat de trigger die uw geïmplementeerde toepassing verbindt met KEDA. Na de implementatie in AKS bewaakt KEDA de Redis-lijst en schaalt hij omhoog als de lijstlengte de gedefinieerde drempelwaarde overschrijdt en omlaag schaalt als de lijstlengte onder de gedefinieerde drempelwaarde valt.

ScaledObject manifestoverzicht

  • scaleTargetRef: In deze sectie wordt beschreven welke workload KEDA waarneemt.

      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 en maxReplicaCount: deze kenmerken bepalen het bereik van replica's die KEDA gebruikt voor schalen. In dit geval geeft u KEDA de opdracht om te schalen van minimaal nul tot maximaal 20.

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

    Notitie

    minReplicaCount: 0 neemt het standaardaantal replica's van de implementatie van één tot nul. Dit gebeurt als de service niet actief is en geen gebeurtenissen verwerkt. Als er in dit geval geen items in de Redis-lijst staan en de service niet actief blijft, wordt KEDA geschaald naar nul.

  • advanced: Deze sectie heeft betrekking op geavanceerde aanpassingen van KEDA. De restoreToOriginalReplicaCount instrueert KEDA om het aantal replica's te retourneren naar de oorspronkelijke waarde na opschalen van gebeurtenissen. In dit geval stelt u deze falsein op , waardoor de schaal omlaag wordt geschaald naar de minReplicaCount waarde nul.

      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: In deze sectie wordt gebruikt scalers om te detecteren of het object moet worden geactiveerd of gedeactiveerd en aangepaste metrische gegevens voor specifieke gebeurtenisbronnen moeten worden feed. De listLength metrische gegevens geven KEDA de opdracht om omhoog te schalen wanneer er tien items in de lijst staan.

      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
    

Zie KEDA Scalers voor meer informatie.

ScaledObject Het manifest maken

  1. Maak in Cloud Shell een manifestbestand voor de Kubernetes-implementatie met scaled-object.yaml de touch opdracht:

    touch scaled-object.yaml
    
  2. Open de geïntegreerde editor in Cloud Shell door code . in te voeren

  3. Open het scaled-object.yaml bestand en voeg de volgende codesectie van YAML toe:

    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. Sla het manifestbestand (CTRL + S) op en sluit de editor (CTRL + Q).

Het manifest toepassen

  1. Implementeer het manifest in uw cluster met behulp van de kubectl apply opdracht:

    kubectl apply -f ./scaled-object.yaml
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    scaledobject.keda.sh/scaled-contoso created
    
  2. Controleer het aantal actieve pods met behulp van de kubectl get pods opdracht:

    kubectl get pods
    

    Uw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarbij één pod wordt uitgevoerd:

    NAME                                  READY   STATUS    RESTARTS   AGE
    contoso-microservice-794d98b5-4flvg   1/1     Running   0          2m1s
    
  3. Voer regelmatig de kubectl get pods opdracht uit om te controleren of de implementatie het aantal pods schaalt op basis van de achterstand van het werk.

    Notitie

    Als u het Linux-hulpprogramma-horloge hebt geïnstalleerd, kunt u de watch kubectl get pods opdracht gebruiken om de schaal van pods te bekijken om de Redis-lijstitems te verwerken. Zo niet, dan kunt u de kubectl get pods -w opdracht gebruiken.

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

      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
    

Nadat alle items zijn verwerkt en de cooldownPeriod verlopen, ziet u dat het aantal pods nul is. Dit komt doordat KEDA alle actieve replica's heeft verwijderd en geen items meer heeft om te verwerken.