Grundlegendes zu Scalerkonfigurationen
Mit der Version v2
der HPA-API können Sie einige Aspekte seines Verhaltens optimieren, indem Sie in der YAML-Datei einen neuen Schlüssel namens spec.behavior
verwenden. Dieser akzeptiert die beiden weiteren Schlüssel scaleDown
und scaleUp
, mit denen Sie definieren, wie sich der HPA beim Auf- bzw. Abskalieren verhält.
Die folgenden Werte sind für diese Schlüssel zulässig:
Schlüssel | type | BESCHREIBUNG |
---|---|---|
stabilizationWindowSeconds | INT | Der Zeitraum, in dem der HPA nach Metriken sucht, um den gewünschten Zustand zu berechnen. Der Standardwert für scaleDown beträgt fünf Minuten, und es gibt kein Stabilisierungsfenster für scaleUp . |
selectPolicy | Zeichenfolge | Der ausgewählte Typ der zu verwendenden Richtlinie. Dieser Wert kann Min , Max oder Disabled lauten. |
Richtlinien | Array von HPAScalingPolicy |
Ein Array möglicher anzuwendender Richtlinien. |
Das HPAScalingPolicy
-Objekt wird als Objekt mit den folgenden Schlüsseln definiert:
Schlüssel | type | Beschreibung |
---|---|---|
type | Zeichenfolge | Typ der Richtlinie. Kann Percent oder Pods sein. |
value | INT | Wert der Richtlinie. |
periodSeconds | INT | Erforderliche Zeitspanne, bevor diese Richtlinie erneut angewendet werden kann. |
Mithilfe von Skalierungsrichtlinien können Sie die Skalierung optimieren. Sie können den Skalierungsvorgang beispielsweise vollständig deaktivieren, indem Sie eine scaleDown
-Richtlinie auf Disabled
festlegen, wie im folgenden Beispiel gezeigt:
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
Sie können auch die Anzahl der Replikate festlegen, die gleichzeitig aufskaliert werden sollen, indem Sie eine scaleUp
-Richtlinie wie folgt definieren:
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 diesem Manifest weisen Sie den HPA an, nach den letzten 120 Sekunden der Metriken zu suchen, um den gewünschten Zustand zu berechnen und den höchsten dieser Werte abzurufen. Danach berechnet sie 30 % der vorhandenen Pods, rundet diese Zahl auf und vergleicht sie mit dem festen Wert für sieben Pods. Da selectPolicy
auf Max
festgelegt ist, verwendet sie die größere dieser beiden Zahlen und wendet diese Richtlinie an. Anschließend wartet sie periodSeconds
, bevor alle Richtlinien erneut angewandt werden.
Nehmen Sie beispielsweise an, dass die Website mit 18 Pods ausgeführt wird und dann eine Spitze auftritt, die etwa 120 Sekunden dauert. Der gewünschte Zustand wird berechnet, indem 30 % der aktuell aktiven Pods berechnet werden, d. h. 5,4 (aufgerundet auf 6). Dieser Wert wird mit der Anzahl der Pods in der zweiten Richtlinie verglichen, die 7 lautet. Da der Schlüssel selectPolicy
auf Max
festgelegt ist, wird der größere dieser beiden Werte verwendet. Anschließend skaliert der HPA um 7 hoch und wartet 90 Sekunden, bevor er erneut hochskaliert. Wenn die Spitze bis 25 Pods andauert, wird die Berechnung erneut durchgeführt. 30 % von 25 Pods sind 7,5 (aufgerundet auf 8), was größer als 7 ist. Der HPA erstellt nun also acht neue Pods und wartet 60 Sekunden, bevor erneut hochskaliert wird.