跳至內容

支援的自動縮放器類型

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 中使用全域或每個修訂版的設定來設定自動縮放。

  1. 如果未指定每個修訂版的自動縮放設定,則會使用全域設定。
  2. 如果指定了每個修訂版的設定,則在兩種設定都存在時,這些設定會覆寫全域設定。

全域設定

自動縮放的全域設定是使用 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 中設定註解不會將變更傳播到其他修訂版,也不會將變更套用至應用程式的自動縮放設定。

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