スケーラー構成を理解する

完了

HPA API の v2 バージョンでは、spec.behavior という YAML ファイルで新しいキーを使用して、動作のいくつかの側面を微調整できます。 scaleDown および scaleUp という他の 2 つのキーが受け入れられ、これらによって、スケールダウン時およびスケールアップ時に HPA がどのように動作するかが定義されます。

これらの各キーには、次の値を使用できます。

キー Type Description
stabilizationWindowSeconds INT 必要な状態を計算するために、HPA がメトリックを検索する期間。 scaleDown の既定値は 5 分で、scaleUp の安定化ウィンドウはありません。
selectPolicy string 使用するポリシーの種類を選択します。この値には、MinMax、または Disabled を指定できます。
policies HPAScalingPolicy の配列 適用する可能性のあるポリシーの配列。

HPAScalingPolicy オブジェクトは、次のキーを持つオブジェクトとして定義されます。

キー Type 説明
type string ポリシーのタイプ。Percent または Pods とすることができます。
INT ポリシーの値。
periodSeconds INT このポリシーを再度適用できるようになるまでに必要な時間。

スケーリング ポリシーを使用すると、スケーリングの動作方法を微調整できます。 @たとえば、次の例に示すように、scaleDown ポリシーを Disabledに設定することで、スケール ダウン操作を完全に無効にすることができます。

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

また、次のように scaleUp ポリシーを定義することで、一度にスケールアウトするレプリカの数を設定することもできます。

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

このマニフェストでは、HPA に対し、過去 120 秒間のメトリックを検索して、必要な状態を計算し、これらの値の最大値を取得するように指示します。 その後、既存のポッドの 30% が計算され、この数値が切り上げられ、7 個のポッドの固定値と比較されます。 selectPolicyMax に設定されているため、これら 2 つの数値の大きい方が使用され、そのポリシーが適用され、periodSeconds 待ってからポリシーがもう一度適用されます。

たとえば、Web サイトが 18 個のポッドで実行され、約 120 秒間続くスパイクが発生したとします。 必要な状態は、現在実行中のポッド数の 30%、つまり 5.4 (6 に丸められる) を算出することによって計算されます。 この値は、2 番目のポリシーのポッド数である 7 と比較されます。 selectPolicy キーは Max に設定されているため、これら 2 つの値の大きい方の値が使用されます。 その後、HPA は 7 個スケールアップされ、もう一度スケールアップする前に 90 秒間待機します。 スパイクが 25 ポッドまで続いた場合は、もう一度計算されます。 25 個のポッドの 30% は 7.5 (丸められて 8) で、7 より大きくなります。 今度は HPA は 8 個の新しいポッドを作成し、もう一度スケールアップする前に 60 秒間待機します。

知識を確認

1.

安定化ウィンドウとは

2.

SelectPolicies の 3 つの値とは何ですか。

3.

HPA の動作をいつ定義しますか。