Knative Pod 自动缩放器的其他自动缩放配置¶
以下设置特定于 Knative Pod 自动缩放器 (KPA)。
模式¶
KPA 对指标(concurrency
或 rps
)在基于时间的窗口内聚合的指标进行操作。
这些窗口定义了自动缩放器考虑的历史数据量,并用于在指定的时间量内平滑数据。这些窗口越短,自动缩放器反应越快。
KPA 的实现有两种模式:**稳定**和**恐慌**。每种模式都有单独的聚合窗口:分别为 stable-window
和 panic-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"