Skip to content

自动缩放器支持类型

Knative服务支持Knative Pod Autoscaler (KPA)和Kubernetes的 Horizontal Pod Autoscaler (HPA)的实现。 本主题列出每种自动缩放器的特性和限制,以及如何配置它们。

重要的

如果您想使用Kubernetes水平Pod自动缩放器(HPA),您必须在安装Knative服务之后安装它。

关于如何安装HPA,请参见安装可选服务扩展.

Knative Pod Autoscaler (KPA)

  • Knative服务核心的一部分,安装Knative服务后默认启用。
  • 支持伸缩到零的功能。
  • 不支持基于cpu的自动伸缩。

Horizontal Pod Autoscaler (HPA)

  • 不是Knative Serving核心的一部分,你必须先安装Knative Serving。
  • 不支持伸缩到零的功能。
  • 支持CPU-based自动定量。

配置自动缩放器实现

自动缩放器实现的类型(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: gcr.io/knative-samples/helloworld-go
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中的自动伸缩配置可以使用全局设置或每修订设置进行设置。

  1. 如果没有指定每修订的自动缩放设置,则将使用全局设置。
  2. 如果指定了每修订的设置,当这两种类型的设置都存在时,这些设置将覆盖全局设置。

全局设置

使用 config-autoscaler ConfigMap配置自动缩放的全局设置。 如果您使用运营商安装了Knative服务,您可以在 spec.config.autoscaler 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"

每修订设置

自动伸缩的每修订设置是通过向版本添加 annotations 来配置的。

Example:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/target: "70"

Important

如果您正在使用服务或配置创建修订,则必须在 revision template 中设置注释,以便在创建每个修订时将任何修改应用于它们。 在单个修订的顶层元数据中设置注释不会将更改传播到其他修订,也不会将更改应用到应用程序的自动伸缩配置中。

Back to top

We use analytics and cookies to understand site traffic. Information about your use of our site is shared with Google for that purpose. Learn more.

× OK