Inzicht in schaalconfiguraties
Met de v2
versie van de HPA-API kunt u enkele aspecten van het gedrag ervan verfijnen met behulp van een nieuwe sleutel in het YAML-bestand met de naam spec.behavior
. Er worden twee andere sleutels geaccepteerd: scaleDown
en scaleUp
, waarmee wordt gedefinieerd hoe de HPA zich gedraagt wanneer u omlaag schaalt en wanneer u omhoog schaalt.
De volgende waarden zijn toegestaan voor elk van deze sleutels:
Sleutel | Type | Beschrijving |
---|---|---|
stabilisatieWindowSeconds | Int | De periode waarin de HPA zoekt naar metrische gegevens om de gewenste status te berekenen. De standaardwaarde voor scaleDown is vijf minuten en er is geen stabilisatievenster voor scaleUp . |
selectPolicy | snaar | Het geselecteerde type beleid dat moet worden gebruikt, kan de waarde Min , Max of Disabled hebben. |
Beleid | reeks van HPAScalingPolicy |
Een matrix van mogelijke beleidsregels die moeten worden toegepast. |
Het HPAScalingPolicy
-object wordt gedefinieerd als een object met de volgende sleutels:
Sleutel | Typ | Beschrijving |
---|---|---|
type | snaar | Het type beleid kan worden Percent of Pods . |
waarde | Int | Waarde van het beleid. |
periodSeconden | Int | Tijd die nodig is voordat dit beleid opnieuw kan worden toegepast. |
Met schaalbeleidsregels kunt u de manier waarop schaalvergroting werkt verfijnen. U kunt bijvoorbeeld de schaling volledig uitschakelen door een scaleDown
beleidregel in te stellen op Disabled
, zoals wordt weergegeven in het volgende voorbeeld:
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
U kunt ook het aantal replica's instellen dat tegelijk moet worden uitgeschaald door een scaleUp
-beleid te definiƫren, zoals hieronder:
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 dit manifest geeft u de HPA de opdracht om te zoeken naar de laatste 120 seconden metrische gegevens om de gewenste status te berekenen en de hoogste van deze waarden op te halen. Zodra dit het geval is, berekent het 30% van de bestaande pods, rondt dit getal naar boven af en vergelijkt het met de vaste waarde van zeven pods. Aangezien de selectPolicy
is ingesteld op Max
, wordt het grotere aantal van deze twee getallen gebruikt en wordt dat beleid toegepast. Vervolgens wordt periodSeconds
gewacht voordat er beleid opnieuw wordt toegepast.
Stel dat de website draait met 18 pods en vervolgens een piek ondervindt die ongeveer 120 seconden duurt. De gewenste status wordt berekend door 30% van de huidige actieve pods te berekenen. Dit is 5,4 (afgerond op 6). Deze waarde wordt vergeleken met het aantal pods in het tweede beleid, namelijk 7. Omdat de selectPolicy
sleutel is ingesteld op Max
, wordt de grotere waarde van deze twee waarden gebruikt. Vervolgens schaalt de HPA met 7 eenheden en wacht 90 seconden voordat er opnieuw wordt opgeschaald. Als de piek doorgaat tot 25 pods, wordt de berekening opnieuw uitgevoerd. 30% van 25 pods is 7,5 (afgerond naar 8), wat groter is dan 7. De HPA maakt nu acht nieuwe pods aan en wacht 60 seconden voordat het opnieuw schaalt.