配置保留实例以平衡Knative的使用成本和应用冷启动时延

在应用没有流量时,社区Knative默认将应用实例数缩容至零以降低成本,从而导致应用重新启动时会经历较长的冷启动时间。如果您的应用对冷启动延时较为敏感,推荐您使用ACK Serverless Knative提供的保留实例功能,保留一个低规格的突发性能实例,平衡好使用成本和启动时长。

为什么使用保留实例

社区Knative策略

在应用没有请求时,社区Knative默认将应用实例数缩容至零个,以降低常驻实例的运行成本。等待请求到来时,应用会被重新分配一个实例,需要经历IaaS资源的分配与调度、应用镜像的拉取、应用启动等环节。而应用镜像大小以及应用启动时长与您的业务强关联,ACK可干预程度小。社区Knative的做法虽然降低了成本,但会让应用在启动时会经历一个冷启动过程,有较长的延时。

ACK Serverless Knative策略

如果您想降低Knative使用成本而不引入冷启动,您可以使用ACK Serverless Knative提供的保留实例来平衡成本和冷启动时长。与社区Knative不同的是,在应用没有流量时,ACK Serverless Knative默认不会将应用实例数缩容至零个,而会保留一个低规格、低成本实例。

在应用没有流量时,您可以使用保留实例替换默认的计算型实例。当第一个请求到来时,保留实例将提供服务,并同时触发默认规格实例的扩容。当默认规格实例扩容完成后,后续新请求将全部转发至默认规格实例,保留实例等待接收到的请求处理完成后自动下线。两种实例类型的无缝替切换能够帮您更好地平衡成本、效率和启动时延。

image

为什么使用突发性能实例作为保留实例

阿里云ECI提供了突发性能实例。突发性能实例通过CPU积分来保证实例的计算性能,适用于平时CPU使用率低,但偶发CPU使用率飙升的场景。突发性能实例创建后会持续累积CPU积分,并在性能无法满足负载要求时消耗更多CPU积分来无缝提高计算性能,而不影响部署在实例上的环境和应用。相较于其他实例规格,突发性能实例的CPU使用更加灵活且成本较低。

基于突发性能实例的低成本、CPU积分等特性,ACK Serverless Knative使用其作为保留实例,默认的规格配置包括ecs.t6-c1m1.large、ecs.t5-lc1m2.small、ecs.s6-c1m2.small、ecs.t6-c1m2.large以及ecs.n1.small,均为满足1 Core 2 GB要求且价格最低的前5个规格。您可以在云产品价格页面获取所有ECI的规格和价格信息。

说明

ECI最多只能同时配置5个规格。

配置保留实例规格

您可以通过Annotation手动配置保留实例的规格,包括直接指定ECI实例规格或通过CPU和内存指定ECI规格。

  • knative.aliyun.com/reserve-instance:设置为enable,表明开启保留实例。

  • knative.aliyun.com/reserve-instance-eci-use-specs:配置保留实例的规格。

指定ECI规格列表

以下以指定ecs.t6-c1m1.large和ecs.t5-lc1m2.small规格为例。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello-spec-1
spec:
  template:
    metadata:
      annotations:
        knative.aliyun.com/reserve-instance: enable
        knative.aliyun.com/reserve-instance-eci-use-specs: "ecs.t6-c1m1.large,ecs.t5-lc1m2.small"
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

指定CPU和内存的规格

指定CPU和内存的规格后,Knative会自动根据实例价格列表搜索满足条件的规格,并使用价格最低的5个规格创建实例。以下以指定1 Core 2 GB的规格为例。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello-spec-2
spec:
  template:
    metadata:
      annotations:
        knative.aliyun.com/reserve-instance: enable
        knative.aliyun.com/reserve-instance-eci-use-specs: "1-2Gi"
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

相关文档