Gyakorlat – Méretezési objektum üzembe helyezése az Azure Kubernetes Service-fürtben

Befejeződött

Ebben a gyakorlatban üzembe helyez egy skálázási objektum egyéni erőforrásdefinícióját (CRD) az AKS-fürtben. A méretezési objektum tartalmazza azt az eseményindítót, amely az üzembe helyezett alkalmazást a KEDA-hoz csatlakoztatja. Az AKS-ben való üzembe helyezés után a KEDA figyeli a Redis-listát, és felskáláz, ha a lista hossza meghaladja a megadott küszöbértéket, és leskáláz, ha a lista hossza a megadott küszöbérték alá esik.

ScaledObject jegyzék áttekintése

  • scaleTargetRef: Ez a szakasz azt ismerteti, hogy a KEDA mely számítási feladatokat figyeli meg.

      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 és maxReplicaCount: Ezek az attribútumok határozzák meg a KEDA által a skálázáshoz használt replikák tartományát. Ebben az esetben arra utasítja a KEDA-t, hogy skálázzon minimum nulláról legfeljebb 20-ra.

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

    Feljegyzés

    minReplicaCount: 0 Az üzembe helyezés alapértelmezett replikaszámát egyről nullára veszi. Ez akkor fordul elő, ha a szolgáltatás tétlen, és nem dolgoz fel eseményeket. Ebben az esetben, ha nincsenek elemek a Redis-listában, és a szolgáltatás tétlen marad, a KEDA nullára skálázható.

  • advanced: Ez a szakasz a KEDA speciális testreszabásával kapcsolatos. A restoreToOriginalReplicaCount KEDA arra utasítja, hogy a felskálázási események után adja vissza a replikák számát az eredeti értékre. Ebben az esetben a falseskálázás értéke nullára minReplicaCount csökken.

      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: Ez a szakasz scalers azt észleli, hogy az objektumot aktiválni vagy inaktiválni kell-e, és egyéni metrikákat kell-e betáplálni bizonyos eseményforrásokhoz. A listLength metrika arra utasítja a KEDA-t, hogy skálázza fel a skálázást, ha tíz elem szerepel a listában.

      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
    

További információ: KEDA Scalers.

A ScaledObject jegyzék létrehozása

  1. A Cloud Shellben hozzon létre egy jegyzékfájlt a Kubernetes-telepítéshez scaled-object.yaml a touch következő paranccsal:

    touch scaled-object.yaml
    
  2. Nyissa meg a Cloud Shell integrált szerkesztőjét a code . paranccsal.

  3. Nyissa meg a scaled-object.yaml fájlt, és adja hozzá a YAML következő kódszakaszát:

    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. Mentse a jegyzékfájlt (CTRL + S), és zárja be a szerkesztőt (CTRL + Q).

A jegyzékfájl alkalmazása

  1. Helyezze üzembe a jegyzékfájlt a fürtben a kubectl apply következő paranccsal:

    kubectl apply -f ./scaled-object.yaml
    

    A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:

    scaledobject.keda.sh/scaled-contoso created
    
  2. Ellenőrizze a futó podok számát a kubectl get pods következő paranccsal:

    kubectl get pods
    

    A kimenetnek a következő példakimenethez hasonlóan kell kinéznie, és egy pod fut:

    NAME                                  READY   STATUS    RESTARTS   AGE
    contoso-microservice-794d98b5-4flvg   1/1     Running   0          2m1s
    
  3. Rendszeres időközönként futtassa a kubectl get pods parancsot annak ellenőrzéséhez, hogy az üzembe helyezés a podok számát skálázja-e a munka hátralékának megfelelően.

    Feljegyzés

    Ha telepítve van a Linux segédprogram óra, a watch kubectl get pods parancs segítségével megtekintheti a podok skálázását a Redis-listaelemek feldolgozásához. Ha nem, használhatja a kubectl get pods -w parancsot.

    A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:

      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
    

Az összes elem feldolgozása és lejárata cooldownPeriod után láthatja, hogy a podok száma nulla. Ennek az az oka, hogy a KEDA eltávolította az összes futó replikát, és nem maradt feldolgozandó elem.