支援的自動縮放器類型¶
Knative Serving 支援實作 Knative Pod Autoscaler (KPA) 和 Kubernetes 的 Horizontal Pod Autoscaler (HPA)。本主題列出每個自動縮放器的功能和限制,以及如何設定它們。
重要
如果您想使用 Kubernetes Horizontal Pod Autoscaler (HPA),您必須在安裝 Knative Serving 之後安裝它。
有關如何安裝 HPA,請參閱安裝選用的 Serving 擴充功能。
Knative Pod Autoscaler (KPA)¶
- Knative Serving 核心的一部分,在安裝 Knative Serving 後預設啟用。
- 支援縮放到零的功能。
- 不支援基於 CPU 的自動縮放。
Horizontal Pod Autoscaler (HPA)¶
- 不是 Knative Serving 核心的一部分,您必須先安裝 Knative Serving。
- 不支援縮放到零的功能。
- 支援基於 CPU 的自動縮放。
設定自動縮放器實作¶
可以使用 class
註解設定自動縮放器實作的類型 (KPA 或 HPA)。
- 全域設定鍵:
pod-autoscaler-class
- 每個修訂版的註解鍵:
autoscaling.knative.dev/class
- 可能的值:
"kpa.autoscaling.knative.dev"
或"hpa.autoscaling.knative.dev"
- 預設值:
"kpa.autoscaling.knative.dev"
範例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/class: "kpa.autoscaling.knative.dev"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
pod-autoscaler-class: "kpa.autoscaling.knative.dev"
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
spec:
config:
autoscaler:
pod-autoscaler-class: "kpa.autoscaling.knative.dev"
全域與每個修訂版的設定¶
可以在 Knative 中使用全域或每個修訂版的設定來設定自動縮放。
- 如果未指定每個修訂版的自動縮放設定,則會使用全域設定。
- 如果指定了每個修訂版的設定,則在兩種設定都存在時,這些設定會覆寫全域設定。
全域設定¶
自動縮放的全域設定是使用 config-autoscaler
ConfigMap 來設定。如果您使用 Operator 安裝 Knative Serving,則可以在 KnativeServing
自訂資源 (CR) 中找到的 spec.config.autoscaler
ConfigMap 中設定全域設定。
預設自動縮放 ConfigMap 的範例¶
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
container-concurrency-target-default: "100"
container-concurrency-target-percentage: "0.7"
enable-scale-to-zero: "true"
max-scale-up-rate: "1000"
max-scale-down-rate: "2"
panic-window-percentage: "10"
panic-threshold-percentage: "200"
scale-to-zero-grace-period: "30s"
scale-to-zero-pod-retention-period: "0s"
stable-window: "60s"
target-burst-capacity: "200"
requests-per-second-target-default: "200"
每個修訂版的設定¶
每個修訂版的自動縮放設定是透過將註解新增至修訂版來設定。
範例
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/target: "70"
重要
如果您是透過服務或設定建立修訂版,則必須在修訂版範本中設定註解,以便任何修改都會在建立時套用至每個修訂版。在單一修訂版的頂層 metadata 中設定註解不會將變更傳播到其他修訂版,也不會將變更套用至應用程式的自動縮放設定。