fix(aula-05): otimizar KEDA para detecção instantânea de crashes
- Simplificar ScaledObject: usar apenas trigger de pods unavailable (instantâneo) em vez de restarts (requeria janela de tempo) - Adicionar VMServiceScrape com scrape interval de 5s para detecção rápida pelo Victoria Metrics (default era 30s) - Acelerar scale down: stabilizationWindow=0, remove 10 pods/s - Query intuitiva: 5 + (unavailable * 2) = réplicas desejadas - Usar metricType AverageValue para cálculo correto de réplicas - Limpar mensagem desnecessária do teste de stress
This commit is contained in:
@@ -57,12 +57,12 @@ spec:
|
||||
|
||||
# SCALE DOWN - Quando pode reduzir pods
|
||||
scaleDown:
|
||||
stabilizationWindowSeconds: 10 # Aguarda 10s de métricas estáveis
|
||||
stabilizationWindowSeconds: 0 # Sem espera - escala imediatamente
|
||||
policies:
|
||||
- type: Percent
|
||||
value: 50 # Remove 50% dos pods por vez
|
||||
periodSeconds: 5 # A cada 5 segundos
|
||||
# Exemplo: 30 -> 15 -> 8 -> 5 (em 10 segundos)
|
||||
- type: Pods
|
||||
value: 10 # Remove 10 pods por vez
|
||||
periodSeconds: 1 # A cada 1 segundo
|
||||
# Exemplo: 30 -> 20 -> 10 -> 5 (em 3 segundos)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# TRIGGERS - Métricas que disparam o scaling
|
||||
@@ -76,43 +76,25 @@ spec:
|
||||
# Comportamento: Escala quando há pods que não estão prontos para receber tráfego
|
||||
#
|
||||
- type: prometheus
|
||||
metricType: AverageValue # desiredReplicas = ceil(metricValue / threshold)
|
||||
metadata:
|
||||
# Endereço do Victoria Metrics (compatível com API do Prometheus)
|
||||
serverAddress: http://vmsingle-vm-victoria-metrics-k8s-stack.monitoring:8428
|
||||
|
||||
# Query PromQL - conta pods indisponíveis do deployment node-bugado
|
||||
# Query PromQL - calcula réplicas desejadas diretamente
|
||||
# Fórmula: 5 (base) + (pods_unavailable * 2)
|
||||
# Exemplos:
|
||||
# 0 unavailable → 5 réplicas (mínimo)
|
||||
# 3 unavailable → 5 + 6 = 11 réplicas
|
||||
# 5 unavailable → 5 + 10 = 15 réplicas
|
||||
query: |
|
||||
kube_deployment_status_replicas_unavailable{deployment="node-bugado", namespace="default"}
|
||||
5 + (kube_deployment_status_replicas_unavailable{deployment="node-bugado", namespace="default"} * 2)
|
||||
|
||||
# threshold: valor da métrica que dispara o scaling
|
||||
# Se unavailable >= 1, adiciona pods
|
||||
# threshold: cada 1 unidade da query = 1 réplica desejada
|
||||
# Com query=5 (0 unavailable): desiredReplicas = 5 (mínimo)
|
||||
# Com query=15 (5 unavailable): desiredReplicas = 15
|
||||
threshold: '1'
|
||||
|
||||
# activationThreshold: valor mínimo para ativar o scaler
|
||||
# Só começa a escalar se unavailable >= 1
|
||||
activationThreshold: '1'
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# TRIGGER 2: Restarts Frequentes
|
||||
# -------------------------------------------------------------------------
|
||||
# Métrica: kube_pod_container_status_restarts_total
|
||||
# Origem: kube-state-metrics (coletado pelo Victoria Metrics)
|
||||
# Comportamento: Escala quando pods estão reiniciando muito (indica problemas)
|
||||
#
|
||||
- type: prometheus
|
||||
metadata:
|
||||
serverAddress: http://vmsingle-vm-victoria-metrics-k8s-stack.monitoring:8428
|
||||
|
||||
# Query PromQL - soma de restarts nos últimos 2 minutos
|
||||
# increase() calcula o incremento no período
|
||||
# sum() agrega todos os pods do deployment
|
||||
query: |
|
||||
sum(increase(kube_pod_container_status_restarts_total{namespace="default", pod=~"node-bugado.*"}[2m]))
|
||||
|
||||
# Se houve 1 ou mais restarts nos últimos 2 min, escala
|
||||
threshold: '1'
|
||||
activationThreshold: '1'
|
||||
|
||||
# =============================================================================
|
||||
# COMANDOS ÚTEIS PARA DEBUG
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user