Förstå skalningskonfigurationer
Med v2
versionen av HPA-API:et kan du finjustera vissa aspekter av dess beteende med hjälp av en ny nyckel i YAML-filen med namnet spec.behavior
. Den accepterar två andra nycklar: scaleDown
och scaleUp
, som definierar hur HPA fungerar vid nedskalning och vid uppskalning.
Följande värden tillåts för var och en av dessa nycklar:
Key | Typ | Beskrivning |
---|---|---|
stabilizationWindowSeconds | heltal | Den period då HPA söker efter mått för att beräkna önskat tillstånd. Standardvärdet för scaleDown är fem minuter och det finns inget stabiliseringsfönster för scaleUp . |
selectPolicy | sträng | Den valda typen av princip som ska användas, det här värdet kan vara Min , Max eller Disabled . |
policies | matris med HPAScalingPolicy |
En matris med möjliga principer att tillämpa. |
Objektet HPAScalingPolicy
definieras som ett objekt med följande nycklar:
Key | Typ | Beskrivning |
---|---|---|
type | sträng | Typ av princip, kan vara Percent eller Pods . |
värde | heltal | Principens värde. |
periodSeconds | heltal | Tid som krävs innan den här principen kan tillämpas igen. |
Med skalningsprinciper kan du finjustera hur skalningen fungerar. Du kan till exempel helt inaktivera nedskalningsåtgärden genom att ange en scaleDown
princip till Disabled
, som du ser i följande exempel:
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
Du kan också ange hur många repliker som ska skalas ut åt gången genom att definiera en scaleUp
princip, så här:
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
I det här manifestet uppmanar du HPA att leta efter de senaste 120 sekunderna av mått för att beräkna önskat tillstånd och få högst av dessa värden. När den väl gör det beräknar den 30 % av de befintliga poddarna, avrundar det här talet uppåt och jämför det med det fasta värdet på sju poddar. selectPolicy
Eftersom är inställd Max
på tar den det större antalet av dessa två tal och tillämpar den principen och väntar periodSeconds
sedan innan du tillämpar några principer igen.
Anta till exempel att webbplatsen körs med 18 poddar och sedan får den en topp som varar i cirka 120 sekunder. Det önskade tillståndet beräknas genom att 30 % av de aktuella poddarna som körs beräknas, vilket är 5,4 (avrundat till 6). Det här värdet jämförs med antalet poddar i den andra principen, som är 7. selectPolicy
Eftersom nyckeln är inställd på Max
använder den det större värdet för dessa två värden. Sedan skalas HPA med 7 och väntar 90 sekunder innan den skalas upp igen. Om toppen fortsatte upp till 25 poddar görs beräkningen igen. 30 % av 25 poddar är 7,5 (avrundade till 8), vilket är större än 7. Nu skapar HPA åtta nya poddar och väntar i 60 sekunder innan de skalas upp igen.