跳到内容

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 共享以达到此目的。了解更多。