Exercício - Implantar um objeto de escala em seu cluster do Serviço Kubernetes do Azure
Neste exercício, você implantará uma definição de recurso personalizada (CRD) de objeto de escala em seu cluster AKS. O objeto scaler contém o gatilho que conecta seu aplicativo implantado ao KEDA. Após a implantação no AKS, o KEDA monitora a Lista Redis e aumenta se o comprimento da lista exceder o limite definido e diminui se o comprimento da lista ficar abaixo do limite definido.
ScaledObject
Visão geral do manifesto
scaleTargetRef
: Esta seção descreve qual carga de trabalho a KEDA observa.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
emaxReplicaCount
: Esses atributos determinam o intervalo de réplicas que o KEDA usa para dimensionamento. Nesse caso, você instrui a KEDA a escalar de um mínimo de zero a um máximo de 20.minReplicaCount: 0 # Optional. Default: 0 maxReplicaCount: 20 # Optional. Default: 100
Nota
minReplicaCount: 0
leva a contagem de réplicas padrão de implantação de um para zero. Isso ocorre se o serviço estiver ocioso e não processar nenhum evento. Nesse caso, se não houver itens na Lista Redis e o serviço permanecer ocioso, o KEDA será dimensionado para zero.advanced
: Esta seção está relacionada a personalizações avançadas do KEDA. OrestoreToOriginalReplicaCount
instrui o KEDA a retornar a contagem de réplicas ao valor original após eventos de expansão. Nesse caso, você o define comofalse
, o que faz com que uma escala diminua para ominReplicaCount
valor de zero.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
: Esta seção usascalers
para detetar se o objeto deve ser ativado ou desativado e alimentar métricas personalizadas para fontes de eventos específicas. AlistLength
métrica instrui o KEDA a aumentar a escala quando houver dez itens na lista.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
Para obter mais informações, consulte KEDA Scalers.
Criar o manifesto ScaledObject
No Cloud Shell, crie um arquivo de manifesto para a implantação do Kubernetes chamada
scaled-object.yaml
usando otouch
comando:touch scaled-object.yaml
Abra o editor integrado no Cloud Shell ao introduzir
code .
Abra o
scaled-object.yaml
arquivo e adicione a seguinte seção de código do 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
Salve o arquivo de manifesto (CTRL + S) e feche o editor (CTRL + Q).
Aplicar o manifesto
Implante o manifesto no cluster usando o
kubectl apply
comando:kubectl apply -f ./scaled-object.yaml
Sua saída deve ser semelhante à saída de exemplo a seguir:
scaledobject.keda.sh/scaled-contoso created
Verifique o número de pods em execução usando o
kubectl get pods
comando:kubectl get pods
Sua saída deve ser semelhante à saída de exemplo a seguir, com um pod em execução:
NAME READY STATUS RESTARTS AGE contoso-microservice-794d98b5-4flvg 1/1 Running 0 2m1s
Execute periodicamente o
kubectl get pods
comando para verificar se a implantação está dimensionando o número de pods de acordo com a lista de pendências de trabalho.Nota
Se você tiver o relógio do utilitário Linux instalado, poderá usar o
watch kubectl get pods
comando para ver a escala dos pods para processar os itens da lista Redis. Se não, você pode usar okubectl get pods -w
comando.Sua saída deve ser semelhante à saída de exemplo a seguir:
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
Depois que todos os itens forem processados e o cooldownPeriod
expirar, você verá que o número de pods é zero. Isso ocorre porque o KEDA removeu todas as réplicas em execução e não tem mais itens para processar.