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