瞭解 scaler 設定

已完成

v2 HPA API 的版本可讓您使用稱為 spec.behavior的 YAML 檔案中的新密鑰,微調其行為的一些層面。 它接受另外兩個索引鍵: scaleDownscaleUp,其會定義 HPA 在相應減少和相應增加時的行為方式。

每個索引鍵都允許下列值:

機碼 類型 描述
stabilizationWindowSeconds int HPA 尋找計量以計算所需狀態的期間。 的預設值 scaleDown 為 5 分鐘,且沒有的 scaleUp穩定視窗。
selectPolicy string 所選取要使用的原則類型,這個值可以是 MinMaxDisabled
原則 HPAScalingPolicy 的陣列 要套用的可能原則陣列。

HPAScalingPolicy 物件會定義為具有下列索引鍵的物件:

機碼 類型 描述
type string 原則的類型,可以是 PercentPods
value int 原則的值。
periodSeconds int 重新套用此原則之前所需的時間量。

調整原則可讓您微調調整規模的運作方式。 例如,您可以將原則設定 scaleDownDisabled,以完全停用相應減少作業,如下列範例所示:

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% 的現有 Pod、四捨五入此數位,並將它與七個 Pod 的固定值進行比較。 selectPolicy由於 設定為 Max,因此會採用這兩個數位中的較大數目並套用該原則,然後等候periodSeconds再套用任何原則。

例如,假設網站是以 18 個 Pod 執行,然後遇到持續約 120 秒的尖峰。 所需的狀態是透過計算目前執行中 Pod 的 30% 獲得,也就是 5.4 (四捨五入為 6)。 此值會與第二個原則中的 Pod 數目進行比較,也就是 7。 由於索引 selectPolicy 鍵設定為 Max,因此會使用這兩個值較大的值。 然後,HPA 會調整 7 秒,並等候 90 秒後再相應增加。 如果尖峰持續到 25 個 Pod,計算會再次完成。 25 個 Pod 的 30% 是 7.5 (四捨五入為 8),大於 7。 現在,HPA 會建立八個新的 Pod,並等候 60 秒後再相應增加。

檢定您的知識

1.

什麼是穩定視窗?

2.

selectPolicies 有哪三個值?

3.

何時應定義 HPA 的行為?