Cvičení – nasazení objektu škálování do clusteru Azure Kubernetes Service
V tomto cvičení nasadíte do clusteru AKS definici vlastního prostředku objektu škálování (CRD). Objekt scaleru obsahuje trigger, který připojí nasazenou aplikaci ke SLUŽBĚ KEDA. Po nasazení do AKS KEDA monitoruje seznam Redis a zvětší kapacitu, pokud délka seznamu překročí definovanou prahovou hodnotu, a sníží kapacitu, pokud délka seznamu klesne pod tuto hodnotu.
Přehled manifestu ScaledObject
scaleTargetRef
: Tato část popisuje, které pracovní zátěže KEDA sleduje.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
amaxReplicaCount
: Tyto atributy určují rozsah replik, které KEDA používá ke škálování. V takovém případě dáte KEDA pokyn, aby škáloval od minimální nuly na maximum 20.minReplicaCount: 0 # Optional. Default: 0 maxReplicaCount: 20 # Optional. Default: 100
Poznámka
minReplicaCount: 0
vezme výchozí počet replik nasazení z jedné na nulu. K tomu dochází, pokud je služba nečinná a nezpracovává žádné události. Pokud v tomto případě nejsou v seznamu Redis žádné položky a služba zůstane nečinná, keDA se škáluje na nulu.advanced
: Tato část se týká pokročilých přizpůsobení KEDA.restoreToOriginalReplicaCount
dá KEDA pokyn, aby po událostech navýšení škálování vrátil počet replik na původní hodnotu. V tomto případě ji nastavíte nafalse
, což způsobí snížení naminReplicaCount
nulu.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
: Tato část používáscalers
k detekci, jestli má být objekt aktivován nebo deaktivován, a podává vlastní metriky pro konkrétní zdroje událostí. MetrikalistLength
přikazuje KEDA zvýšit měřítko, když je v seznamu deset položek.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
Další informace najdete v tématu KEDA skalery.
Vytvoření manifestu ScaledObject
V Cloud Shellu vytvořte soubor manifestu pro nasazení Kubernetes s názvem
scaled-object.yaml
pomocí příkazutouch
:touch scaled-object.yaml
Zadáním
code .
otevřete integrovaný editor v Cloud Shellu.Otevřete soubor
scaled-object.yaml
a přidejte následující část kódu 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
Uložte soubor manifestu (CTRL + S) a zavřete editor(CTRL + Q).
Použití manifestu
Pomocí příkazu
kubectl apply
nasaďte manifest do clusteru:kubectl apply -f ./scaled-object.yaml
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
scaledobject.keda.sh/scaled-contoso created
Pomocí příkazu
kubectl get pods
zkontrolujte počet spuštěných podů:kubectl get pods
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu s jedním spuštěným podem:
NAME READY STATUS RESTARTS AGE contoso-microservice-794d98b5-4flvg 1/1 Running 0 2m1s
Pravidelně spusťte příkaz
kubectl get pods
, abyste ověřili, že nasazení škáluje počet podů podle backlogu práce.Poznámka
Pokud máte nainstalovanou utilitu Linux watch, můžete pomocí příkazu
watch kubectl get pods
zobrazit škálování podů pro zpracování položek seznamu Redis. Pokud ne, můžete použít příkazkubectl get pods -w
.Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
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
Po zpracování všech položek a vypršení platnosti cooldownPeriod
uvidíte, že počet podů je nula. Důvodem je to, že KEDA odstranil všechny spuštěné repliky a neexistují žádné položky k zpracování.