配置保留實例以平衡Knative的使用成本和應用冷啟動時延
在應用沒有流量時,社區(qū)Knative默認將應用實例數(shù)縮容至零以降低成本,從而導致應用重新啟動時會經(jīng)歷較長的冷啟動時間。如果您的應用對冷啟動延時較為敏感,推薦您使用ACK Serverless Knative提供的保留實例功能,保留一個低規(guī)格的突發(fā)性能實例,平衡好使用成本和啟動時長。
為什么使用保留實例
社區(qū)Knative策略
在應用沒有請求時,社區(qū)Knative默認將應用實例數(shù)縮容至零個,以降低常駐實例的運行成本。等待請求到來時,應用會被重新分配一個實例,需要經(jīng)歷IaaS資源的分配與調(diào)度、應用鏡像的拉取、應用啟動等環(huán)節(jié)。而應用鏡像大小以及應用啟動時長與您的業(yè)務強關聯(lián),ACK可干預程度小。社區(qū)Knative的做法雖然降低了成本,但會讓應用在啟動時會經(jīng)歷一個冷啟動過程,有較長的延時。
ACK Serverless Knative策略
如果您想降低Knative使用成本而不引入冷啟動,您可以使用ACK Serverless Knative提供的保留實例來平衡成本和冷啟動時長。與社區(qū)Knative不同的是,在應用沒有流量時,ACK Serverless Knative默認不會將應用實例數(shù)縮容至零個,而會保留一個低規(guī)格、低成本實例。
在應用沒有流量時,您可以使用保留實例替換默認的計算型實例。當?shù)谝粋€請求到來時,保留實例將提供服務,并同時觸發(fā)默認規(guī)格實例的擴容。當默認規(guī)格實例擴容完成后,后續(xù)新請求將全部轉(zhuǎn)發(fā)至默認規(guī)格實例,保留實例等待接收到的請求處理完成后自動下線。兩種實例類型的無縫替切換能夠幫您更好地平衡成本、效率和啟動時延。
為什么使用突發(fā)性能實例作為保留實例
阿里云ECI提供了突發(fā)性能實例。突發(fā)性能實例通過CPU積分來保證實例的計算性能,適用于平時CPU使用率低,但偶發(fā)CPU使用率飆升的場景。突發(fā)性能實例創(chuàng)建后會持續(xù)累積CPU積分,并在性能無法滿足負載要求時消耗更多CPU積分來無縫提高計算性能,而不影響部署在實例上的環(huán)境和應用。相較于其他實例規(guī)格,突發(fā)性能實例的CPU使用更加靈活且成本較低。
基于突發(fā)性能實例的低成本、CPU積分等特性,ACK Serverless Knative使用其作為保留實例,默認的規(guī)格配置包括ecs.t6-c1m1.large、ecs.t5-lc1m2.small、ecs.s6-c1m2.small、ecs.t6-c1m2.large以及ecs.n1.small,均為滿足1 Core 2 GB要求且價格最低的前5個規(guī)格。您可以在云產(chǎn)品價格頁面獲取所有ECI的規(guī)格和價格信息。
ECI最多只能同時配置5個規(guī)格。
配置保留實例規(guī)格
您可以通過Annotation手動配置保留實例的規(guī)格,包括直接指定ECI實例規(guī)格或通過CPU和內(nèi)存指定ECI規(guī)格。
knative.aliyun.com/reserve-instance
:設置為enable
,表明開啟保留實例。knative.aliyun.com/reserve-instance-eci-use-specs
:配置保留實例的規(guī)格。
指定ECI規(guī)格列表
以下以指定ecs.t6-c1m1.large和ecs.t5-lc1m2.small規(guī)格為例。
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和內(nèi)存的規(guī)格
指定CPU和內(nèi)存的規(guī)格后,Knative會自動根據(jù)實例價格列表搜索滿足條件的規(guī)格,并使用價格最低的5個規(guī)格創(chuàng)建實例。以下以指定1 Core 2 GB的規(guī)格為例。
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
相關文檔
關于突發(fā)性能實例的基本概念、工作原理等,請參見突發(fā)性能實例概述。
您可以在Knative中使用性價比較高的搶占式實例,請參見使用搶占式實例。
您可以在Knative中實現(xiàn)工作負載的自動伸縮,請參見在Knative中使用HPA、基于流量請求數(shù)實現(xiàn)服務自動擴縮容、基于AHPA實現(xiàn)定時自動擴縮容。