All Products
Search
Document Center

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

Last Updated:Mar 01, 2026

Untuk aplikasi dengan waktu startup yang lebih lambat, seperti layanan Java, kebijakan scale-to-zero bawaan Knative community menyebabkan latensi cold start yang tinggi. ACK Knative mengatasi hal ini dengan instans terjadwal—Pod berbiaya rendah yang selalu aktif dan dapat langsung melayani permintaan sementara instans standar sedang dalam proses startup.

Cara kerja

Saat Layanan Knative melakukan scale-to-zero, permintaan pertama yang masuk memicu cold start: penjadwalan resource, pengunduhan image, dan startup aplikasi harus selesai terlebih dahulu sebelum permintaan dapat dilayani.

Instans terjadwal mengubah perilaku ini dengan menjaga satu atau beberapa Pod ber-spesifikasi rendah tetap berjalan selama periode idle:

  1. Scale-in dengan jaring pengaman. Saat trafik berhenti, Layanan melakukan scale-in, tetapi setidaknya satu instans terjadwal tetap online untuk menangani permintaan baru yang mungkin datang.

  2. Tanggapan dan scale-out secara paralel. Saat permintaan tiba, dua hal terjadi secara bersamaan:

    • Permintaan diarahkan ke instans terjadwal yang aktif untuk diproses segera—tanpa cold start.

    • Knative membuat instans ber-spesifikasi standar untuk menangani trafik yang sedang berlangsung.

  3. Alih trafik. Setelah instans standar pertama siap, seluruh trafik berikutnya diarahkan ke instans tersebut.

  4. Pembersihan. Setelah instans terjadwal menyelesaikan pemrosesan permintaan awalnya, instans tersebut secara otomatis dihentikan.

Reserved instance workflow

Prasyarat

Sebelum memulai, pastikan Anda telah:

Referensi anotasi

Aktifkan instans terjadwal dengan menambahkan anotasi ke manifes Layanan Knative Anda. Tabel berikut mencantumkan semua anotasi yang didukung.

AnotasiDeskripsiBawaan
knative.aliyun.com/reserve-instanceAktifkan atau nonaktifkan instans terjadwal. Atur ke "enable".Nonaktif
knative.aliyun.com/reserve-instance-typeJenis resource untuk instans terjadwal. Nilai yang didukung: eci, ecs, acs.eci
knative.aliyun.com/reserve-instance-replicasJumlah instans terjadwal yang dipertahankan.1
knative.aliyun.com/reserve-instance-eci-use-specsTipe instans atau spesifikasi CPU-memori untuk ECI. Menerima nama tipe instans (misalnya, ecs.t6-c1m1.large) atau format CPU-memori (misalnya, 1-2Gi). Pisahkan beberapa tipe instans dengan koma.-
knative.aliyun.com/reserve-instance-ecs-use-specsTipe instans ECS untuk instans terjadwal (misalnya, ecs.gn6i-c4g1.xlarge).-
knative.aliyun.com/reserve-instance-acs-compute-classKelas komputasi untuk Pod ACS (misalnya, general-purpose).-
knative.aliyun.com/reserve-instance-acs-compute-qosKualitas komputasi untuk Pod ACS (misalnya, default).-
knative.aliyun.com/reserve-instance-cpu-resource-requestPermintaan CPU untuk instans terjadwal (misalnya, "1").-
knative.aliyun.com/reserve-instance-cpu-resource-limitBatas CPU untuk instans terjadwal (misalnya, "1").-
knative.aliyun.com/reserve-instance-memory-resource-requestPermintaan memori untuk instans terjadwal (misalnya, "2Gi").-
knative.aliyun.com/reserve-instance-memory-resource-limitBatas memori untuk instans terjadwal (misalnya, "2Gi").-

Konfigurasikan instans terjadwal ECI

Elastic Container Instance (ECI) merupakan jenis resource bawaan untuk instans terjadwal. Pod ECI berjalan di infrastruktur arsitektur tanpa server, sehingga tidak memerlukan perencanaan kapasitas node.

Tentukan berdasarkan tipe instans

Untuk menggunakan tipe instans ECS tertentu sebagai dasar ECI, tambahkan anotasi knative.aliyun.com/reserve-instance-eci-use-specs. Anda dapat menentukan beberapa tipe instans yang dipisahkan dengan koma.

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, definisikan resource CPU dan memori yang dibutuhkan.

Contoh berikut menentukan instans dengan 1 core dan 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 instans terjadwal ACS

Untuk menggunakan Alibaba Cloud Container Compute Service (ACS) sebagai instans terjadwal, pertama-tama instal ACK Virtual Node. Untuk informasi selengkapnya, lihat Components, 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 dan kualitas komputasi:

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) Kelas komputasi untuk Pod ACS
        knative.aliyun.com/reserve-instance-acs-compute-class: "general-purpose"
        # (Opsional) 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 instans terjadwal ECS

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

Workload GPU

Contoh berikut mengonfigurasi instans GPU-accelerated ber-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 beberapa 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 resource 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

Workload CPU

Contoh berikut menentukan instans dengan 1 core dan 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 trafik lonjakan tinggi, perluas satu instans terjadwal menjadi kolam sumber daya dengan menentukan jumlah replika menggunakan anotasi knative.aliyun.com/reserve-instance-replicas.

Contoh berikut membuat kolam terjadwal yang terdiri 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

Verifikasi konfigurasi

Setelah menerapkan manifes Service, verifikasi bahwa instans terjadwal sedang berjalan:

# Periksa apakah Pod instans terjadwal sedang berjalan
kubectl get pods -l serving.knative.dev/service=<your-service-name>

# Lihat anotasi pada Knative Service
kubectl get ksvc <your-service-name> -o yaml | grep reserve-instance

Instans terjadwal yang berhasil dikonfigurasi tetap berada dalam status Running meskipun tidak ada traffic yang dilayani.

Terapkan di lingkungan produksi

  • Pilih spesifikasi yang tepat. Pilih tipe instans dengan biaya terendah untuk instans terjadwal Anda yang mampu menjalankan aplikasi secara andal dan melayani setidaknya satu permintaan.

  • Gunakan pool terjadwal untuk lonjakan tinggi. Jika layanan Anda berpotensi mengalami lonjakan traffic mendadak yang tinggi, konfigurasikan pool instans terjadwal agar lebih mampu menyerap beban awal tersebut.

Penagihan

Instans reserved berjalan terus-menerus dan dikenai biaya. Lihat detail berikut ini:

Referensi