跳到内容

Knative Pod 自动缩放器的其他自动缩放配置

以下设置特定于 Knative Pod 自动缩放器 (KPA)。

模式

KPA 对指标concurrencyrps)在基于时间的窗口内聚合的指标进行操作。

这些窗口定义了自动缩放器考虑的历史数据量,并用于在指定的时间量内平滑数据。这些窗口越短,自动缩放器反应越快。

KPA 的实现有两种模式:**稳定**和**恐慌**。每种模式都有单独的聚合窗口:分别为 stable-windowpanic-window

稳定模式用于常规操作,而恐慌模式默认情况下窗口短得多,如果出现流量突发,将用于快速向上扩展修订版。

注意

使用恐慌模式时,修订版将不会向下扩展以避免 churn。如果在稳定窗口时间范围内没有快速反应的理由,自动缩放器将退出恐慌模式。

稳定窗口

  • **全局键:** 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
  • **每修订版注释键:** n/a
  • **可能的值:** 浮点数
  • **默认:** 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
  • **每修订版注释键:** n/a
  • **可能的值:** 浮点数
  • **默认:** 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 共享,以用于该目的。 了解更多信息。