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 vertikálně navýší kapacitu, pokud délka seznamu překročí definovanou prahovou hodnotu, a pokud délka seznamu klesne pod definovanou prahovou hodnotu, vertikálně navýší kapacitu.
ScaledObject
přehled manifestu
scaleTargetRef
: Tato část popisuje, které úlohy 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
přebírá 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 vztahuje k pokročilým přizpůsobením KEDA. PříkazrestoreToOriginalReplicaCount
KEDA vrátí počet replik do původní hodnoty po událostech vertikálního navýšení kapacity. V tomto případě ji nastavíte nafalse
hodnotu , která způsobí vertikální snížení kapacity naminReplicaCount
hodnotu nuly.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
ke zjištění, jestli má být objekt aktivován nebo deaktivován, a podává vlastní metriky pro konkrétní zdroje událostí. MetrikalistLength
dává KEDA pokyn, aby vertikálně navýšit kapacitu, 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 naleznete v tématu KEDA Scalers.
Vytvoření manifestu ScaledObject
V Cloud Shellu vytvořte soubor manifestu pro nasazení Kubernetes volaný
scaled-object.yaml
pomocítouch
příkazu:touch scaled-object.yaml
V Cloud Shellu otevřete integrovaný editor zadáním
code .
.scaled-object.yaml
Otevřete soubor 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 nasaďte manifest do clusteru
kubectl apply
: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 zkontrolujte počet spuštěných podů
kubectl get pods
: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
kubectl get pods
příkaz, abyste ověřili, že nasazení škáluje počet podů podle backlogu práce.Poznámka:
Pokud máte nainstalované nástroje Linux, můžete pomocí
watch kubectl get pods
příkazu zobrazit škálování podů ke zpracování položek seznamu Redis. Pokud ne, můžete použítkubectl get pods -w
příkaz.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 cooldownPeriod
vypršení platnosti uvidíte, že počet podů je nula. Důvodem je to, že KEDA odebral všechny spuštěné repliky a nezůstaly žádné položky ke zpracování.