Övning – Distribuera ett skalningsobjekt till ditt Azure Kubernetes Service-kluster
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
: Det här avsnittet beskriver 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
ochmaxReplicaCount
: 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
Kommentar
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 returnera antalet repliker till det ursprungliga värdet efter uppskalningshändelser. I det här fallet anger du det tillfalse
, vilket gör att en skalning ned tillminReplicaCount
värdet noll.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ändsscalers
för att identifiera om objektet ska aktiveras eller inaktiveras och mata in anpassade mått för specifika händelsekällor. MåttetlistLength
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-skalare.
Skapa manifestet ScaledObject
I Cloud Shell skapar du en manifestfil för Kubernetes-distributionen med
scaled-object.yaml
touch
kommandot :touch scaled-object.yaml
Öppna det integrerade redigeringsprogrammet i Cloud Shell genom att skriva
code .
scaled-object.yaml
Öppna filen 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
Spara manifestfilen (CTRL + S) och stäng redigeraren(CTRL + Q).
Tillämpa manifestet
Distribuera manifestet till klustret med hjälp av
kubectl apply
kommandot :kubectl apply -f ./scaled-object.yaml
Dina utdata bör se ut ungefär som följande exempelutdata:
scaledobject.keda.sh/scaled-contoso created
Kontrollera antalet poddar som körs med 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
Kör kommandot regelbundet
kubectl get pods
för att kontrollera att distributionen skalar antalet poddar enligt kvarvarande arbete.Kommentar
Om du har installerat Linux-verktygsklockan
watch kubectl get pods
kan du använda kommandot för att se poddskalan för att bearbeta Redis-listobjekten. Annars kan du användakubectl get pods -w
kommandot .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.