支持的自动扩缩器类型¶
Knative Serving 支持 Knative Pod 自动扩缩器 (KPA) 和 Kubernetes 的水平 Pod 自动扩缩器 (HPA) 的实现。本主题列出了每种自动扩缩器的功能和限制,以及如何配置它们。
重要
如果您想使用 Kubernetes 水平 Pod 自动扩缩器 (HPA),则必须在安装 Knative Serving 后安装它。
有关如何安装 HPA,请参阅安装可选的 Serving 扩展。
Knative Pod 自动扩缩器 (KPA)¶
- Knative Serving 核心的一部分,安装 Knative Serving 后默认启用。
- 支持缩减到零功能。
- 不支持基于 CPU 的自动扩缩。
水平 Pod 自动扩缩器 (HPA)¶
- 不属于 Knative Serving 核心,必须先安装 Knative Serving。
- 不支持缩减到零功能。
- 支持基于 CPU 的自动扩缩。
配置自动扩缩器实现¶
自动扩缩器实现类型(KPA 或 HPA)可以通过使用 class 注解来配置。
- 全局设置键:
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 中的自动扩缩配置可以使用全局或按修订版本设置。
- 如果未指定按修订版本自动扩缩设置,将使用全局设置。
- 如果指定了按修订版本设置,当两种类型的设置都存在时,这些设置将覆盖全局设置。
全局设置¶
自动扩缩的全局设置使用 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"
重要
如果您正在使用服务或配置创建修订版本,则必须在修订模板中设置注解,以便在创建每个修订版本时应用任何修改。在单个修订版本的顶层元数据中设置注解不会将更改传播到其他修订版本,也不会将更改应用于应用程序的自动扩缩配置。