Vysvětlení konfigurací škálovače

Dokončeno

v2 verze rozhraní API HPA umožňuje doladit některé aspekty jeho chování pomocí nového klíče v souboru YAML s názvem spec.behavior. Přijímá dva další klíče: scaleDown a scaleUp, které definují, jak se HPA chová při vertikálním snížení kapacity a při vertikálním navýšení kapacity.

Pro každý z těchto klíčů jsou povoleny následující hodnoty:

Klíč Typ Popis
StabilizaceWindowSeconds Int Období, ve kterém HPA hledá metriky pro výpočet požadovaného stavu. Výchozí hodnota pro scaleDown je pět minut a pro scaleUpneexistuje žádné okno stabilizace .
vybratPolitiku řetězec Vybraný typ zásady, kterou chcete použít, může být tato hodnota Min, Maxnebo Disabled.
politiky pole HPAScalingPolicy Pole možných zásad, které se mají použít.

Objekt HPAScalingPolicy je definován jako objekt s následujícími klíči:

Klíč Typ Popis
typ řetězec Typ zásad může být Percent nebo Pods.
hodnota Int Hodnota zásady
doba v sekundách Int Doba potřebná před dalším uplatněním této zásady.

Zásady škálování umožňují doladit způsob, jakým škálování funguje. Operaci vertikálního snížení kapacity můžete například úplně zakázat nastavením zásady scaleDown na Disabled, jak je znázorněno v následujícím příkladu:

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

Počet replik, které se mají najednou škálovat, můžete také nastavit tak, že definujete zásady scaleUp takto:

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

V tomto manifestu říkáte HPA, aby vyhledal posledních 120 sekund metrik, aby vypočítal požadovaný stav a získal nejvyšší z těchto hodnot. Jakmile to udělá, vypočítá 30% existujících podů, zaokrouhlí toto číslo nahoru a porovná ho s pevnou hodnotou sedmi podů. Vzhledem k tomu, že selectPolicy je nastaveno na Max, vezme větší počet těchto dvou čísel a použije tuto politiku, a pak počká periodSeconds, než znovu použije jakoukoli politiku.

Řekněme například, že web běží s 18 pody a pak zaznamená špičku, která trvá asi 120 sekund. Požadovaný stav se vypočítá pomocí výpočtu 30% aktuálně běžících podů, což je 5,4 (zaokrouhleno na 6). Tato hodnota se porovnává s počtem podů ve druhé zásadě, což je 7. Vzhledem k tomu, že klíč selectPolicy je nastaven na Max, používá větší hodnotu těchto dvou hodnot. Pak se HPA škáluje 7krát a před dalším zvýšením kapacity počká 90 sekund. Pokud špička pokračovala až na 25 podů, výpočet se provede znovu. 30% z 25 podů je 7,5 (zaokrouhleno na 8), což je větší než 7. Teď HPA vytvoří osm nových podů a před dalším navýšením kapacity počká na 60 sekund.

Kontrola znalostí

1.

Co je okno stabilizace?

2.

Jaké jsou tři hodnoty pro selectPolicies?

3.

Kdy byste měli definovat chování pro HPA?