全部產品
Search
文件中心

Container Service for Kubernetes:配置保留執行個體以平衡Knative的使用成本和應用冷啟動時延

更新時間:Sep 10, 2024

在應用沒有流量時,社區Knative預設將應用執行個體數縮容至零以降低成本,從而導致應用重新啟動時會經歷較長的冷啟動時間。如果您的應用對冷啟動延時較為敏感,推薦您使用ACK Knative提供的保留執行個體功能,保留一個低規格的突發效能執行個體,平衡好使用成本和啟動時間長度。

為什麼使用保留執行個體

社區Knative策略

在應用沒有請求時,社區Knative預設將應用執行個體數縮容至零個,以降低常駐執行個體的運行成本。等待請求到來時,應用會被重新分配一個執行個體,需要經歷IaaS資源的分配與調度、應用鏡像的拉取、應用啟動等環節。而應用鏡像大小以及應用啟動時間長度與您的業務強關聯,ACK可幹預程度小。社區Knative的做法雖然降低了成本,但會讓應用在啟動時會經歷一個冷啟動過程,有較長的延時。

ACK Knative策略

如果您想降低Knative使用成本而不引入冷啟動,您可以使用ACK Knative提供的保留執行個體來平衡成本和冷啟動時間長度。與社區Knative不同的是,在應用沒有流量時,ACK Knative預設不會將應用執行個體數縮容至零個,而會保留一個低規格、低成本執行個體。

在應用沒有流量時,您可以使用保留執行個體替換預設的計算型執行個體。當第一個請求到來時,保留執行個體將提供服務,並同時觸發預設規格執行個體的擴容。當預設規格執行個體擴容完成後,後續新請求將全部轉寄至預設規格執行個體,保留執行個體等待接收到的請求處理完成後自動下線。兩種執行個體類型的無縫替切換能夠幫您更好地平衡成本、效率和啟動時延。

為什麼使用突發效能執行個體作為保留執行個體

阿里雲ECI提供了突發效能執行個體。突發效能執行個體通過CPU積分來保證執行個體的計算效能,適用於平時CPU使用率低,但偶發CPU使用率飆升的情境。突發效能執行個體建立後會持續累積CPU積分,並在效能無法滿足負載要求時消耗更多CPU積分來無縫提高計算效能,而不影響部署在執行個體上的環境和應用。相較於其他執行個體規格,突發效能執行個體的CPU使用更加靈活且成本較低。

基於突發效能執行個體的低成本、CPU積分等特性,ACK 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

相關文檔