Förstå skalningskonfigurationer

Slutförd

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, Maxeller 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 Maxpå 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å Maxanvä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.

Testa dina kunskaper

1.

Vad är stabiliseringsfönstret?

2.

Vilka är de tre värdena för selectPolicies?

3.

När ska du definiera beteendet för din HPA?