Knative支持HPA的弹性能力。您可以在Knative Service中设置CPU指标阈值,满足在突发高负载的场景下,自动扩缩容资源的诉求。本文介绍如何在Knative中使用HPA。

前提条件

部署Knative

操作步骤

  1. 创建ksvc-hpa.yaml

    在Knative Service指定使用HPA弹性策略,以下为配置示例。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-hpa
    spec:
      template:
        metadata:
          labels:
            app: helloworld-go-hpa
          annotations:
            autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev"
            autoscaling.knative.dev/metric: "cpu"
            autoscaling.knative.dev/target: "75"
            autoscaling.knative.dev/minScale: "1"
            autoscaling.knative.dev/maxScale: "10"
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/knative-samples/helloworld-go:160e4dc8
              resources:
                requests:
                  cpu: '200m'              
    • 通过autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev"指定HPA弹性插件。
    • 通过autoscaling.knative.dev/metric设置HPA CPU指标。
    • 通过autoscaling.knative.dev/target设置HPA CPU指标的阈值。
    • 通过autoscaling.knative.dev/minScale: "1"设置弹性策略实例数的最小值。
    • 通过autoscaling.knative.dev/maxScale: "10"设置弹性策略实例数的最大值。
  2. 执行HPA弹性策略。
    kubectl apply -f ksvc-hpa.yaml

执行结果

Knative Service开启HPA弹性后,实例变化趋势如下图所示。实例变化