Présentation des configurations du scaler
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.