Alıştırma - Azure Kubernetes Service kümenize ölçek nesnesi dağıtma
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
vemaxReplicaCount
: 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ğerinifalse
olarak ayarlarsınız ve bu da ölçeğin sıfır değerine düşürülmesineminReplicaCount
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ırscalers
. Ö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
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
Cloud Shell’de
code .
yazarak tümleşik düzenleyiciyi açınscaled-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
Bildirim dosyasını (CTRL + S) kaydedin ve düzenleyiciyi (CTRL + Q) kapatın.
Bildirimi uygulama
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
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
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 kullanabilirsinizkubectl 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.