Informazioni sulle configurazioni dell'utilità di ridimensionamento

Completato

La versione v2beta2 dell'API HPA consente di ottimizzare alcuni aspetti del comportamento tramite una nuova chiave nel file YAML denominata spec.behavior. Accetta altre due chiavi, scaleDown e scaleUp, che definiscono, rispettivamente, il comportamento della risorsa HPA quando si riducono e quando si aumentano le prestazioni.

I seguenti sono i valori consentiti in ognuna di queste chiavi:

Chiave Tipo Descrizione
stabilizationWindowSeconds INT Periodo in cui la risorsa HPA cercherà le metriche per calcolare lo stato desiderato. Il valore predefinito per scaleDown è di 5 minuti e non esiste una finestra di stabilizzazione per scaleUp
selectPolicy string Tipo di criterio selezionato da usare; questo valore può essere Min, Max o Disabled
criteri matrice di HPAScalingPolicy Matrice di possibili criteri da applicare

L'oggetto HPAScalingPolicy è definito come oggetto con le chiavi seguenti:

Chiave Tipo Descrizione
type string Tipo di criterio; può essere Percent o Pods
Valore INT Valore del criterio
periodSeconds INT Periodo di tempo necessario prima che questo criterio possa essere applicato di nuovo

I criteri di scalabilità consentono di ottimizzare il funzionamento della scalabilità. È ad esempio possibile disabilitare completamente l'operazione di riduzione delle prestazioni impostando un criterio scaleDown su Disabled:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: contoso-website
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: contoso-website
  minReplicas: 1
  maxReplicas: 10
  behavior:
    scaleDown:
      selectPolicy: Disabled
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 20
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 50

È anche possibile impostare il numero di repliche da aumentare in una volta definendo un criterio scaleUp, in questo modo:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: contoso-website
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: contoso-website
  minReplicas: 1
  maxReplicas: 10
  behavior:
    scaleUp:
      selectPolicy: Max
      stabilizationWindowSeconds: 120
      policies:
        - type: Percent
          value: 30
          periodSeconds: 60
        - type: Pods
          value: 7
          periodSeconds: 90
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 20
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 50

In questo manifesto si indica alla risorsa HPA di cercare gli ultimi 120 secondi di metriche per calcolare lo stato desiderato e ottenere i più alti tra questi valori. Una volta eseguita questa operazione, la risorsa HPA calcolerà il 30% dei pod esistenti, arrotonderà questo numero per eccesso e lo confronterà con il valore fisso di sette pod. Dal momento che selectPolicy è impostato su Max, considererà il maggiore di questi due numeri e applicherà tale criterio, quindi attenderà periodSeconds prima di applicare di nuovo qualsiasi criterio.

Ad esempio, il sito Web è in esecuzione con 18 pod, quindi subisce un picco che dura almeno 120 secondi. Lo stato desiderato verrà calcolato sulla base del 30% dei pod attualmente in esecuzione, ovvero 5,4. Questo numero verrà arrotondato a 6 e confrontato con il numero di pod nel secondo criterio, pari a 7. Poiché la chiave selectPolicy è impostata su Max, userà il maggiore di questi due valori, quindi la risorsa HPA scalerà di 7 e attenderà 90 secondi prima di aumentare nuovamente le prestazioni.

Se il picco prosegue, ora con 25 pod, il calcolo viene eseguito di nuovo. Il 30% di 25 pod è 7,5, che verrà arrotondato a 8, che è maggiore di 7, quindi ora la risorsa HPA crea otto nuovi pod e attende 60 secondi prima di aumentare di nuovo le prestazioni.

Verifica le tue conoscenze

1.

Che cosa si intende per finestra di stabilizzazione?

2.

Quali sono i tre valori per selectPolicies?

3.

Quando è consigliabile definire il comportamento per la risorsa HPA?