Inzicht in schaalconfiguraties
Met v2
de versie van de HPA-API kunt u bepaalde 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:
Key | Type | Description |
---|---|---|
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 | tekenreeks | Het geselecteerde type beleid dat moet worden gebruikt, kan Min deze waarde zijn, Max of Disabled . |
policies | matrix van HPAScalingPolicy |
Een matrix van mogelijke beleidsregels die moeten worden toegepast. |
Het HPAScalingPolicy
object wordt gedefinieerd als een object met de volgende sleutels:
Key | Type | Description |
---|---|---|
type | tekenreeks | Het type beleid kan of Percent Pods . |
waarde | int | Waarde van het beleid. |
periodSeconden | int | Tijd die nodig is voordat dit beleid opnieuw kan worden toegepast. |
Met schaalbeleid kunt u de werking van de schaal aanpassen. U kunt de schaal omlaag bijvoorbeeld volledig uitschakelen door een scaleDown
beleid in te Disabled
stellen op , 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:
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 is voltooid, wordt 30% van de bestaande pods berekend, wordt dit getal naar boven afgerond en wordt het vergeleken met de vaste waarde van zeven pods. Aangezien de selectPolicy
instelling is ingesteld Max
, wordt het grotere aantal van deze twee getallen gebruikt en wordt dat beleid toegepast. Vervolgens wacht u periodSeconds
voordat u een beleid opnieuw toepast.
Stel dat de website wordt uitgevoerd met 18 pods en dat er een piek optreedt 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, wat 7 is. Omdat de selectPolicy
sleutel is ingesteld Max
op, wordt de grotere waarde van deze twee waarden gebruikt. Vervolgens wordt de HPA geschaald met 7 en wacht 90 seconden voordat u weer omhoog schaalt. Als de piek tot 25 pods is voortgezet, wordt de berekening opnieuw uitgevoerd. 30% van 25 pods is 7,5 (afgerond op 8), wat groter is dan 7. De HPA maakt nu acht nieuwe pods en wacht 60 seconden voordat u weer omhoog schaalt.