跳至內容

Knative Pod Autoscaler 的其他自動縮放配置

以下設定專屬於 Knative Pod Autoscaler (KPA)。

模式

KPA 根據隨時間彙總的指標 (concurrencyrps) 運作。

這些視窗定義了自動縮放器考量的歷史資料量,並用於在指定的時間範圍內平滑資料。這些視窗越短,自動縮放器的反應速度就越快。

KPA 的實作有兩種模式:穩定緊急。每種模式都有個別的彙總視窗:分別是 stable-windowpanic-window

穩定模式用於一般操作,而緊急模式預設具有短得多的視窗,如果湧入大量流量,則會用於快速擴展修訂版本。

注意

使用緊急模式時,修訂版本不會縮減,以避免波動。如果在穩定視窗時間範圍內沒有快速反應的理由,自動縮放器就會離開緊急模式。

穩定視窗

  • 全域金鑰: stable-window
  • 每個修訂版本的註解金鑰: autoscaling.knative.dev/window
  • 可能值: 持續時間,6s <= 值 <= 1h
  • 預設值: 60s

注意

當縮放至零個複本時,只有在整個穩定視窗持續時間內沒有任何流量流向修訂版本後,才會移除最後一個複本。

範例

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/window: "40s"
    spec:
      containers:
        - image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
 name: config-autoscaler
 namespace: knative-serving
data:
 stable-window: "40s"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
  name: knative-serving
spec:
  config:
    autoscaler:
      stable-window: "40s"

緊急視窗

緊急視窗定義為穩定視窗的百分比,以確保兩者在工作方式上彼此相關。

此值表示在進入緊急模式時,評估歷史資料的視窗將縮小多少。例如,值為 10.0 表示在緊急模式下,視窗將為穩定視窗大小的 10%。

  • 全域金鑰: panic-window-percentage
  • 每個修訂版本的註解金鑰: autoscaling.knative.dev/panic-window-percentage
  • 可能值: 浮點數,1.0 <= 值 <= 100.0
  • 預設值: 10.0

範例

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/panic-window-percentage: "20.0"
    spec:
      containers:
        - image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
 name: config-autoscaler
 namespace: knative-serving
data:
 panic-window-percentage: "20.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
  name: knative-serving
spec:
  config:
    autoscaler:
      panic-window-percentage: "20.0"

緊急模式閾值

此閾值定義自動縮放器何時從穩定模式移至緊急模式。

此值是目前複本數量可以處理的流量百分比。

注意

值為 100.0 (100%) 表示自動縮放器始終處於緊急模式,因此最小值應高於 100.0

預設設定 200.0 表示如果流量是目前複本數量可以處理的兩倍,則將啟動緊急模式。

  • 全域金鑰: panic-threshold-percentage
  • 每個修訂版本的註解金鑰: autoscaling.knative.dev/panic-threshold-percentage
  • 可能值: 浮點數,110.0 <= 值 <= 1000.0
  • 預設值: 200.0

範例

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/panic-threshold-percentage: "150.0"
    spec:
      containers:
        - image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
 name: config-autoscaler
 namespace: knative-serving
data:
 panic-threshold-percentage: "150.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
  name: knative-serving
spec:
  config:
    autoscaler:
      panic-threshold-percentage: "150.0"

縮放速率

這些設定控制複本數量在單一評估週期中可以向上或向下縮放多少。

始終允許在每個方向上的最小變更為一個複本,因此自動縮放器可以在任何時間縮放至 +/- 1 個複本,而與設定的縮放速率無關。

向上縮放速率

此設定決定所需 Pod 與現有 Pod 的最大比例。例如,值為 2.0 時,修訂版本只能在一個評估週期中從 N 個 Pod 擴展至 2*N 個 Pod。

  • 全域金鑰: max-scale-up-rate
  • 每個修訂版本的註解金鑰:
  • 可能值: 浮點數
  • 預設值: 1000.0

範例

apiVersion: v1
kind: ConfigMap
metadata:
 name: config-autoscaler
 namespace: knative-serving
data:
 max-scale-up-rate: "500.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
  name: knative-serving
spec:
  config:
    autoscaler:
      max-scale-up-rate: "500.0"

向下縮放速率

此設定決定現有 Pod 與所需 Pod 的最大比例。例如,值為 2.0 時,修訂版本只能在一個評估週期中從 N 個 Pod 縮減至 N/2 個 Pod。

  • 全域金鑰: max-scale-down-rate
  • 每個修訂版本的註解金鑰:
  • 可能值: 浮點數
  • 預設值: 2.0

範例

apiVersion: v1
kind: ConfigMap
metadata:
 name: config-autoscaler
 namespace: knative-serving
data:
 max-scale-down-rate: "4.0"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
  name: knative-serving
spec:
  config:
    autoscaler:
      max-scale-down-rate: "4.0"

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的資訊會與 Google 分享以達到此目的。 了解更多。