Présentation des configurations du scaler

Effectué

La version v2 de l’API HPA vous permet d’affiner certains aspects de son comportement en utilisant une nouvelle clé dans le fichier YAML appelée spec.behavior. Elle accepte deux autres clés, scaleDown et scaleUp, qui définissent le comportement du HPA lors du scale-down et du scale-up.

Les valeurs suivantes sont autorisées pour chacune de ces clés :

Clé Type Description
stabilizationWindowSeconds int Période pendant laquelle le HPA recherche des métriques pour calculer l’état souhaité. La valeur par défaut de scaleDown est de cinq minutes et il n’y a pas de fenêtre de stabilisation pour scaleUp.
selectPolicy string Type de stratégie sélectionné à utiliser. Cette valeur peut être Min, Max ou Disabled.
stratégies tableau de HPAScalingPolicy Tableau de stratégies applicables.

L’objet HPAScalingPolicy est défini en tant qu’objet avec les clés suivantes :

Clé Type Description
type string Type de stratégie. La valeur peut être Percent ou Pods.
value int Valeur de la stratégie.
periodSeconds int Durée nécessaire pour que cette stratégie puisse être réappliquée.

Les stratégies de mise à l’échelle vous permettent d’affiner leur fonctionnement. Par exemple, vous pouvez complètement désactiver l’opération de mise à l’échelle en définissant une stratégie scaleDown sur Disabled, tel qu’illustré dans l’exemple suivant :

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

Vous pouvez également définir le nombre de réplicas à créer à la fois lors d’une opération de scale-out en définissant une stratégie scaleUp :

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

Dans ce manifeste, vous indiquez au HPA de rechercher les 120 dernières secondes de métriques pour calculer l’état désiré et obtenir la valeur la plus élevée. Il calcule ensuite 30 % des pods existants, arrondit ce chiffre à l’unité supérieure et le compare à la valeur fixe de sept pods. Étant donné que selectPolicy est défini sur Max, il retient le plus grand de ces deux nombres et applique cette stratégie, puis attend periodSeconds avant d’appliquer à nouveau des stratégies.

Supposons par exemple que le site web fonctionne avec 18 pods, puis qu’il enregistre un pic qui dure environ 120 secondes. L’état souhaité est calculé en calculant 30 % des pods en cours d’exécution, soit 5,4 (arrondi à 6). Cette valeur est comparée au nombre de pods de la seconde stratégie, à savoir 7. Étant donné que la clé selectPolicy est définie sur Max, elle utilise la plus grande de ces deux valeurs. Le HPA passe ensuite à une échelle de 7 et attend 90 secondes avant de monter en charge. Si le pic continuait jusqu’à 25 pods, le calcul serait à nouveau effectué. 30 % de 25 pods donne 7,5 (arrondi à 8), ce qui est supérieur à 7. Le HPA crée alors huit nouveaux pods et attend 60 secondes avant de procéder à une autre montée en charge.

Vérifiez vos connaissances

1.

Que signifie la fenêtre de stabilisation ?

2.

Quelles sont les trois valeurs de selectPolicy ?

3.

Quand faut-il définir le comportement du HPA ?