全部产品
Search
文档中心

Container Service for Kubernetes:Konfigurasikan instans terjadwal untuk Layanan Knative guna mengurangi latensi cold start

更新时间:Oct 25, 2025

Untuk aplikasi dengan waktu startup yang lebih lambat, seperti yang ditulis dalam Java, kebijakan penskalaan default komunitas Knative dapat menyebabkan latensi cold-start yang tinggi. ACK Serverless Knative menyelesaikan masalah ini dengan fitur instans terjadwal. Dengan mempertahankan instans berbiaya rendah tetap aktif, fitur ini memastikan respons langsung sambil tetap mengoptimalkan biaya sumber daya.

Cara kerjanya

Untuk menghemat biaya, komunitas Knative menurunkan layanan hingga nol pod saat tidak ada trafik. Saat permintaan baru tiba, sistem harus melalui proses cold start—termasuk penjadwalan sumber daya, penarikan citra, dan startup aplikasi—yang dapat menyebabkan latensi signifikan untuk permintaan pertama.

ACK Serverless Knative memodifikasi perilaku ini dengan menjaga satu atau lebih instans spesifikasi rendah tetap berjalan bahkan selama periode idle.

Alur Kerja:

  1. Saat trafik berhenti: Service (pod) diskalakan masuk, namun setidaknya satu instans terjadwal tetap online untuk menangani permintaan baru yang potensial.

  2. Saat permintaan pertama tiba, dua aksi dipicu secara bersamaan (operasi paralel):

    • Respon segera: Permintaan langsung diarahkan ke instans terjadwal aktif untuk diproses, yang menghindari latensi cold start.

    • Pemicu scale-out: Knative segera membuat instans spesifikasi standar untuk menangani trafik.

  3. Peralihan trafik: Setelah instans spesifikasi standar pertama siap, semua trafik berikutnya dialihkan kepadanya.

  4. Pembersihan sumber daya: Setelah menyelesaikan permintaan awalnya, instans terjadwal asli secara otomatis dihentikan.

Cara menggunakan instans terjadwal

Setelah mengimplementasikan Knative di kluster Anda, Anda dapat mengonfigurasi fitur instans terjadwal dengan menambahkan anotasi berikut ke manifes Layanan Knative:

Anotasi

Deskripsi

knative.aliyun.com/reserve-instance: "enable"

Mengaktifkan fitur instans terjadwal.

knative.aliyun.com/reserve-instance-type: <type>

Menentukan tipe sumber daya untuk instans terjadwal. Nilai yang didukung adalah eci (default), ecs, dan acs.

Konfigurasikan eci instans terjadwal

Untuk menggunakan Elastic Container Instances untuk instans terjadwal, instal terlebih dahulu ACK Virtual Node. Untuk informasi lebih lanjut, lihat Komponen.

Tentukan berdasarkan tipe instans

Untuk menggunakan tipe instans tertentu tipe instans, tambahkan anotasi knative.aliyun.com/reserve-instance-eci-use-specs.

Contoh berikut menentukan tipe instans ecs.t6-c1m1.large dan 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

Tentukan berdasarkan CPU dan memori

Jika Anda tidak yakin tentang tipe instans tertentu, tentukan sumber daya CPU dan memori yang diperlukan.

Contoh berikut menentukan instans 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

Konfigurasikan acs instans terjadwal

Untuk menggunakan Alibaba Cloud Container Compute Service (ACS) untuk instans terjadwal, instal terlebih dahulu ACK Virtual Node. Untuk informasi lebih lanjut, lihat Komponen, lalu tambahkan anotasi knative.aliyun.com/reserve-instance-type: acs.

Tentukan berdasarkan kelas komputasi dan kualitas

Berikut adalah konfigurasi dasar untuk instans terjadwal ACS. Anda dapat menentukan kelas komputasi (compute-class) dan kualitas komputasi (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
        # (Opsional) Konfigurasikan kelas komputasi untuk pod ACS
        knative.aliyun.com/reserve-instance-acs-compute-class: "general-purpose"
        # (Opsional) Konfigurasikan kualitas komputasi untuk pod ACS
        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"

Tentukan berdasarkan CPU dan memori

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"

Konfigurasikan ecs instans terjadwal

Tentukan tipe Elastic Compute Service (ECS) instance type berbiaya lebih rendah untuk instans terjadwal Anda guna mengurangi biaya selama periode idle.

GPU

Contoh berikut mengonfigurasi instans GPU-accelerated spesifikasi rendah sebagai instans terjadwal untuk layanan inferensi 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" 
        # Aktifkan dan konfigurasikan instans terjadwal ECS. Anda dapat mengonfigurasi satu atau lebih tipe instans.
        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:
          # Konfigurasi sumber daya untuk instans standar
          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

Contoh berikut menentukan instans 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"

Konfigurasikan kolam instans terjadwal

Untuk menangani lonjakan trafik tinggi, perluas instans terjadwal tunggal menjadi kolam sumber daya dengan menentukan jumlah replika menggunakan anotasi knative.aliyun.com/reserve-instance-replicas.

Contoh berikut membuat kolam cadangan dari 3 instans spesifikasi rendah:

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

Terapkan dalam produksi

  • Pilih spesifikasi yang tepat: Pilih tipe instans berbiaya terendah untuk instans terjadwal Anda yang dapat menjalankan aplikasi Anda secara andal dan melayani setidaknya satu permintaan.

  • Gunakan kolam cadangan untuk lonjakan tinggi: Jika layanan Anda kemungkinan akan mengalami lonjakan trafik mendadak, konfigurasikan kolam instans terjadwal untuk menyerap beban awal dengan lebih baik.

Penagihan

Instans terjadwal berjalan terus-menerus dan menimbulkan biaya. Lihat berikut ini untuk detailnya:

Referensi