Informazioni sulle configurazioni dell'utilità di ridimensionamento

Completato

La v2 versione dell'API HPA consente di ottimizzare alcuni aspetti del comportamento usando una nuova chiave nel file YAML denominato spec.behavior. Accetta due altre chiavi: scaleDown e scaleUp, che definiscono il comportamento dell'HPA quando si riduce e quando si aumentano le prestazioni.

Sono consentiti i valori seguenti per ognuna di queste chiavi:

Chiave Type Descrizione
stabilizationWindowSeconds int Periodo in cui HPA cerca le metriche per calcolare lo stato desiderato. Il valore predefinito per scaleDown è di cinque minuti e non esiste alcuna 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 Type Descrizione
type string Tipo di criterio; può essere Percent o Pods.
value int Valore del criterio.
periodSeconds int Periodo di tempo necessario prima che questo criterio possa essere applicato di nuovo.

I criteri di ridimensionamento consentono di ottimizzare il funzionamento del ridimensionamento. Ad esempio, è possibile disabilitare completamente l'operazione di riduzione impostando un scaleDown criterio su Disabled, come illustrato nell'esempio seguente:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: contoso-website
  namespace: hpa-contoso
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/v2
kind: HorizontalPodAutoscaler
metadata:
  name: contoso-website
  namespace: hpa-contoso
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 all'HPA di cercare gli ultimi 120 secondi di metriche per calcolare lo stato desiderato e ottenere il massimo di questi valori. Al termine, calcola il 30% dei pod esistenti, arrotonda questo numero e lo confronta con il valore fisso di sette pod. selectPolicy Poiché è impostato su Max, accetta il numero maggiore di questi due numeri e applica tale criterio, quindi attende periodSeconds prima di applicare nuovamente i criteri.

Si supponga, ad esempio, che il sito Web sia in esecuzione con 18 pod e quindi si verifichi un picco che dura circa 120 secondi. Lo stato desiderato viene ottenuto calcolando il 30% dei pod correnti in esecuzione, ovvero 5,4 (arrotondato a 6). Questo valore viene confrontato con il numero di pod nel secondo criterio, ovvero 7. Poiché la selectPolicy chiave è impostata su Max, usa il valore più grande di questi due valori. L'HPA viene quindi ridimensionato di 7 e attende 90 secondi prima di aumentare nuovamente le prestazioni. Se il picco ha continuato fino a 25 pod, il calcolo viene eseguito di nuovo. Il 30% di 25 pod è 7,5 (arrotondato a 8) ed è maggiore di 7. A questo momento, HPA crea otto nuovi pod e attende 60 secondi prima di aumentare di nuovo le prestazioni.

Verificare le conoscenze

1.

Qual è la finestra di stabilizzazione?

2.

Quali sono i tre valori per selectPolicies?

3.

Quando è consigliabile definire il comportamento per la risorsa HPA?