全部產品
Search
文件中心

Container Service for Kubernetes:為Knative服務配置保留執行個體以降低冷啟動延遲

更新時間:Oct 23, 2025

對於啟動較慢的業務應用(如 Java 應用等),社區Knative預設的“縮容至0”策略可能會引發較高的冷啟動延遲。ACK Knative提供保留執行個體功能,通過維持低成本的常駐執行個體實現快速響應,在降低冷啟動影響的同時有效控制資源成本。

工作原理

為節約成本,社區Knative會在服務無流量時將執行個體數縮減至0。新請求到達時,需經歷資源調度、鏡像拉取和應用啟動等一系列過程,即“冷啟動”,可能帶來較高的首次請求延遲。

為此,ACK Knative提供保留執行個體,在無流量期間仍然保留一個或多個低規格的保留執行個體持續運行。其工作流程如下。

  1. 無流量時:服務(Pod)逐步縮容,最終至少保留一個執行個體線上,維持基本響應能力。

  2. 首個請求到達與擴容觸發:

    當第一個請求到達時,會同時觸發兩個並行操作:

    • 即時服務:請求立即路由至線上的保留執行個體進行處理,避免冷啟動延遲。

    • 擴容指令:Knative立即建立標準規格的執行個體。

  3. 流量切換:當首個標準規格的執行個體準備就緒後,後續新請求自動轉寄至標準規格執行個體。

  4. 資源回收:原保留執行個體在處理完接收到的初始請求後自動下線。

使用方式

在叢集中部署Knative後,可通過為Knative Service添加特定Annotation來配置保留執行個體功能。

  • knative.aliyun.com/reserve-instance:設定為enable,開啟保留執行個體。

  • knative.aliyun.com/reserve-instance-type: eci :指定保留執行個體的資源類型,支援eci(預設)、ecsacs

配置ECI類型的保留執行個體

使用ECI算力時,需安裝ACK Virtual Node,操作入口請參見組件

指定ECI執行個體規格

如需使用特定執行個體規格,可通過knative.aliyun.com/reserve-instance-eci-use-specs來指定。

以指定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和記憶體資源。

以指定1 Core 2 GiB的規格為例。

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

配置ACS類型的保留執行個體

可通過knative.aliyun.com/reserve-instance-type: acs啟用ACS類型的保留執行個體。

使用ACS算力時,需安裝ACK Virtual Node,操作入口請參見組件

指定算力類型與品質

以下為基礎的ACS保留執行個體配置,支援指定計算類型compute-class)和算力品質compute-qos)。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
spec:
  template:
    metadata:
      annotations:
        knative.aliyun.com/reserve-instance: enable
        knative.aliyun.com/reserve-instance-type: acs
        # (可選) 配置ACS Pod的算力類型
        knative.aliyun.com/reserve-instance-acs-compute-class: "general-purpose"
        # (可選) 配置ACS Pod的算力品質
        knative.aliyun.com/reserve-instance-acs-compute-qos: "default"
    spec:
      containers:
      - image: registry-vpc.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
        env:
        - name: TARGET
          value: "Knative"

指定CPU和記憶體的規格

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go-resource
spec:
  template:
    metadata:
      annotations:
        knative.aliyun.com/reserve-instance: enable
        knative.aliyun.com/reserve-instance-type: acs
        knative.aliyun.com/reserve-instance-cpu-resource-request: "1"
        knative.aliyun.com/reserve-instance-memory-resource-request: "2Gi"
    spec:
      containers:
      - image: registry-vpc.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
        env:
        - name: TARGET
          value: "Knative"

配置 ECS 類型的保留執行個體

可為保留執行個體配置一個低於標準規格的ECS執行個體規格,以降低長期運行成本。

GPU

以下樣本為一個GPU推理服務配置了低規格的GPU執行個體作為保留執行個體。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  labels:
    release: qwen
  name: qwen
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/metric: "concurrency" 
        # 啟用並配置ECS類型的保留執行個體,可配置一個或多個規格
        knative.aliyun.com/reserve-instance: enable 
        knative.aliyun.com/reserve-instance-type: ecs
        knative.aliyun.com/reserve-instance-ecs-use-specs: ecs.gn6i-c4g1.xlarge 
      labels:
        release: qwen
    spec:
      containers:
      - command:
        - sh
        - -c
        - python3 -m vllm.entrypoints.openai.api_server --port 8080 --trust-remote-code
          --served-model-name qwen --model /mnt/models/Qwen-7B-Chat-Int8 --gpu-memory-utilization
          0.95 --quantization gptq --max-model-len=6144
        image: kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:0.4.1
        imagePullPolicy: IfNotPresent
        name: vllm-container
        resources:
          # 標準執行個體的資源配置
          limits:
            cpu: "16"
            memory: 60Gi
            nvidia.com/gpu: "1"
          requests:
            cpu: "8"
            memory: 36Gi
            nvidia.com/gpu: "1"
        volumeMounts:
        - mountPath: /mnt/models/Qwen-7B-Chat-Int8
          name: qwen-7b-chat-int8
      volumes:
      - name: qwen-7b-chat-int8
        persistentVolumeClaim:
          claimName: qwen-7b-chat-int8-dataset

CPU

以指定1 Core 2 GiB的規格為例。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-resource
spec:
  template:
    metadata:
      annotations:
        knative.aliyun.com/reserve-instance: enable
        knative.aliyun.com/reserve-instance-type: ecs
        knative.aliyun.com/reserve-instance-cpu-resource-request: "1"
        knative.aliyun.com/reserve-instance-cpu-resource-limit: "1"
        knative.aliyun.com/reserve-instance-memory-resource-request: "2Gi"
        knative.aliyun.com/reserve-instance-memory-resource-limit: "2Gi"
    spec:
      containers:
      - image: registry-vpc.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
        env:
        - name: TARGET
          value: "Knative"

配置保留執行個體資源集區

為了應對較高的突發流量請求,可將單個保留執行個體擴充為一個資源集區,通過knative.aliyun.com/reserve-instance-replicas指定保留執行個體的副本數量。

以下樣本建立了一個由3個低規格執行個體組成的保留池。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello-reserve-pool
spec:
  template:
    metadata:
      annotations:
        knative.aliyun.com/reserve-instance: enable
        knative.aliyun.com/reserve-instance-replicas: "3"
        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

生產環境使用建議

  • 合理選擇保留執行個體的規格,推薦採用能夠穩定運行應用並處理至少一個請求的最低可行配置。

  • 若業務情境請求從0到1時可能出現較高的請求流量,建議使用保留執行個體資源集區,以提升流量承接能力。

計費說明

保留執行個體會持續運行併產生相應費用。計費規則,請參見:

相關文檔