Knative Pod Autoscaler 的其他自動縮放配置¶
以下設定專屬於 Knative Pod Autoscaler (KPA)。
模式¶
KPA 根據隨時間彙總的指標 (concurrency
或 rps
) 運作。
這些視窗定義了自動縮放器考量的歷史資料量,並用於在指定的時間範圍內平滑資料。這些視窗越短,自動縮放器的反應速度就越快。
KPA 的實作有兩種模式:穩定和緊急。每種模式都有個別的彙總視窗:分別是 stable-window
和 panic-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"