支持的自动缩放器类型¶
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 的自动缩放。
配置自动缩放器实现¶
可以使用 class
注释配置自动缩放器实现类型 (KPA 或 HPA)。
- 全局设置键:
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 进行配置。如果您使用运算符安装了 Knative Serving,则可以在 spec.config.autoscaler
ConfigMap 中设置全局配置设置,该 ConfigMap 位于 KnativeServing
自定义资源 (CR) 中。
默认自动缩放 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"
重要
如果您使用服务或配置创建修订版,则必须在修订版模板中设置注释,以便在创建每个修订版时应用所有修改。在单个修订版的顶级元数据中设置注释不会将更改传播到其他修订版,也不会将更改应用到应用程序的自动缩放配置。