Alıştırma - Azure Kubernetes Service kümenize ölçek nesnesi dağıtma

Tamamlandı

Bu alıştırmada AKS kümenize bir ölçek nesnesi özel kaynak tanımı (CRD) dağıtacaksınız. Ölçekleyici nesnesi, dağıtılan uygulamanızı KEDA'ya bağlayan tetikleyiciyi içerir. AKS'ye dağıtıldıktan sonra KEDA, Redis Listesi'ni izler ve liste uzunluğu tanımlı eşiği aşarsa ölçeği büyütür ve liste uzunluğu tanımlı eşiğin altına düşerse ölçeği küçültür.

ScaledObject bildirime genel bakış

  • scaleTargetRef: Bu bölümde KEDA'nın gözlemlediği iş yükü açıklanmaktadır.

      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 ve maxReplicaCount: Bu öznitelikler KEDA'nın ölçeklendirme için kullandığı çoğaltma aralığını belirler. Bu durumda, KEDA'ya en az sıfırdan en fazla 20'ye ölçeklendirilmesini emredersiniz.

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

    Not

    minReplicaCount: 0 Dağıtım varsayılan çoğaltma sayısını birden sıfıra alır. Bu durum, hizmet boştaysa ve hiçbir olayı işlemediyse oluşur. Bu durumda, Redis Listesinde öğe yoksa ve hizmet boşta kalırsa KEDA sıfıra ölçeklendirilir.

  • advanced: Bu bölüm, KEDA'nın gelişmiş özelleştirmeleriyle ilgilidir. , restoreToOriginalReplicaCount KEDA'ya ölçeği artırma olaylarından sonra çoğaltma sayısını özgün değere döndürmesini sağlar. Bu durumda, değerini falseolarak ayarlarsınız ve bu da ölçeğin sıfır değerine düşürülmesine minReplicaCount neden olur.

      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: Bu bölüm, nesnenin etkinleştirilmesi veya devre dışı bırakılması gerekip gerekmediğini algılamak ve belirli olay kaynakları için özel ölçümler beslemek için kullanır scalers . Ölçüm, listLength KEDA'ya listede on öğe olduğunda ölçeği artırmasını emreder.

      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
    

Daha fazla bilgi için bkz . KEDA Ölçeklendiricileri.

ScaledObject Bildirimi oluşturma

  1. Cloud Shell'de Kubernetes Dağıtımı için komutunu kullanarak touch adlı scaled-object.yaml bir bildirim dosyası oluşturun:

    touch scaled-object.yaml
    
  2. Cloud Shell’de code . yazarak tümleşik düzenleyiciyi açın

  3. scaled-object.yaml Dosyasını açın ve YAML'nin aşağıdaki kod bölümünü ekleyin:

    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. Bildirim dosyasını (CTRL + S) kaydedin ve düzenleyiciyi (CTRL + Q) kapatın.

Bildirimi uygulama

  1. Komutunu kullanarak bildirimi kümenize dağıtın kubectl apply :

    kubectl apply -f ./scaled-object.yaml
    

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

    scaledobject.keda.sh/scaled-contoso created
    
  2. komutunu kullanarak kubectl get pods çalışan pod sayısını denetleyin:

    kubectl get pods
    

    Çıkışınız aşağıdaki örnek çıkışa benzer görünmelidir ve bir pod çalıştırılmalıdır:

    NAME                                  READY   STATUS    RESTARTS   AGE
    contoso-microservice-794d98b5-4flvg   1/1     Running   0          2m1s
    
  3. Dağıtımın kubectl get pods pod sayısını iş kapsamına göre ölçeklendirdığını doğrulamak için komutunu düzenli aralıklarla çalıştırın.

    Not

    Linux yardımcı programı izlemesi yüklüyse komutunu kullanarak watch kubectl get pods podların Redis liste öğelerini işleyecek şekilde ölçeklendirildiğini görebilirsiniz. Aksi takdirde komutunu kullanabilirsiniz kubectl get pods -w .

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

      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
    

Tüm öğeler işlendikten ve cooldownPeriod süresi dolduktan sonra pod sayısının sıfır olduğunu görürsünüz. Bunun nedeni, KEDA'nın çalışan tüm çoğaltmaları kaldırması ve işlenmek üzere öğe bırakmamış olmasıdır.