Vysvětlení konfigurací škálovače
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 scaleUp neexistuje žádné okno stabilizace . |
vybratPolitiku | řetězec | Vybraný typ zásady, kterou chcete použít, může být tato hodnota Min , Max nebo 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.