Oefening: een schaalobject implementeren in uw Azure Kubernetes Service-cluster
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
enmaxReplicaCount
: 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. DerestoreToOriginalReplicaCount
instrueert KEDA om het aantal replica's te retourneren naar de oorspronkelijke waarde na opschalen van gebeurtenissen. In dit geval stelt u dezefalse
in op , waardoor de schaal omlaag wordt geschaald naar deminReplicaCount
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 gebruiktscalers
om te detecteren of het object moet worden geactiveerd of gedeactiveerd en aangepaste metrische gegevens voor specifieke gebeurtenisbronnen moeten worden feed. DelistLength
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
Maak in Cloud Shell een manifestbestand voor de Kubernetes-implementatie met
scaled-object.yaml
detouch
opdracht:touch scaled-object.yaml
Open de geïntegreerde editor in Cloud Shell door
code .
in te voerenOpen 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
Sla het manifestbestand (CTRL + S) op en sluit de editor (CTRL + Q).
Het manifest toepassen
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
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
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 dekubectl 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.