Grundlegendes zu Scalerkonfigurationen

Abgeschlossen

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.

Überprüfen Sie Ihr Wissen

1.

Was ist das Stabilisierungsfenster?

2.

Was sind die drei Werte von selectPolicies?

3.

Wann sollten Sie das Verhalten für Ihren HPA definieren?