Exercício – Implantar um objeto de escala no seu cluster do Serviço de Kubernetes do Azure
Neste exercício, você implantará uma CRD (definição de recurso personalizado) de objeto de escala em seu cluster do AKS. O objeto do dimensionador contém o gatilho que conecta seu aplicativo implantado ao KEDA. Após a implantação no AKS, o KEDA monitora a lista do Redis e escala verticalmente se o tamanho da lista exceder o limite definido e reduz verticalmente se o comprimento da lista ficar abaixo dele.
Visão geral do manifesto ScaledObject
scaleTargetRef
: Essa seção descreve qual carga de trabalho o 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 escalar. Nesse caso, você instruiu o 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
Observação
O
minReplicaCount: 0
leva nossa contagem de réplicas padrão da Implantação de um a zero. Isso ocorre se o serviço estiver ocioso e não estiver processando nenhum evento. Nesse caso, se não houver nenhum item na Lista do Redis e o serviço permanecer ocioso, o KEDA escalará para zero.advanced
: Essa seção geralmente está relacionada à personalização avançada do KEDA. OrestoreToOriginalReplicaCount
instrui o KEDA a retornar a contagem de réplicas para o valor original após eventos de dimensionamento vertical. Nesse caso, você o define comofalse
, causando uma redução vertical para valorminReplicaCount
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
: Essa seção usascalers
para detectar se o objeto deve ser ativado ou desativado e alimentar métricas personalizadas para origens de evento específicas. Essa métricalistLength
instrui o KEDA a escalar verticalmente quando há 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, confira Dimensionadores KEDA.
Criar o manifesto ScaledObject
No Cloud Shell, crie um arquivo de manifesto para a Implantação do Kubernetes chamado
scaled-object.yaml
usando o comandotouch
:touch scaled-object.yaml
Abra o editor integrado no Cloud Shell inserindo
code .
Abra o arquivo
scaled-object.yaml
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 comando
kubectl apply
:kubectl apply -f ./scaled-object.yaml
Seu resultado deve ser semelhante ao seguinte exemplo de saída:
scaledobject.keda.sh/scaled-contoso created
Verifique o número de pods em execução usando o comando
kubectl get pods
:kubectl get pods
A 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 comando
kubectl get pods
para verificar se a Implantação está escalando o número de pods de acordo com a lista de pendências do trabalho.Observação
Se você tiver o utilitário do Linux instalado, poderá executar o comando
watch kubectl get pods
para ver a escala de pods para processar os itens de lista do Redis. Caso contrário, você poderá usar o comandokubectl get pods -w
.Seu resultado deve ser semelhante ao seguinte exemplo de saída:
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.