Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Configure reserved instances for Knative Services to reduce cold start latency

Dernière mise à jour :Aug 11, 2026

Pour les applications dont le temps de démarrage est long, comme les services Java ou les charges de travail d'inférence IA, la fonctionnalité d'instance réservée d'ACK Serverless Knative maintient une instance peu coûteuse en permanence. Cela garantit que la première requête après une période d'inactivité est traitée immédiatement, sans attendre un démarrage à froid.

Fonctionnement

Par défaut, Knative réduit le nombre de pods d'un service à zéro lorsque le trafic s'arrête. Lorsqu'une nouvelle requête arrive, le système doit allouer des ressources, extraire l'image et démarrer l'application avant de pouvoir répondre. Ce processus peut prendre plusieurs secondes.

Lorsqu'une instance réservée est activée, le comportement de mise à l'échelle à zéro évolue comme suit :

  1. Arrêt du trafic — Le service Knative réduit ses capacités, mais une instance réservée reste en ligne.

  2. Arrivée de la première requête — Deux actions se produisent simultanément :

    • La requête est acheminée vers l'instance réservée pour un traitement immédiat.

    • Knative crée des instances aux spécifications standard pour prendre en charge le trafic continu.

  3. Transfert du trafic — Dès que la première instance standard est prête, toutes les requêtes suivantes lui sont acheminées.

  4. Nettoyage — Après avoir traité la requête initiale, l'instance réservée est automatiquement arrêtée.

image

Prérequis

Avant de commencer, assurez-vous d'avoir :

Activer les instances réservées

Ajoutez les annotations suivantes au manifeste de votre service Knative pour activer la fonctionnalité :

Annotation Description
knative.aliyun.com/reserve-instance: "enable" Active la fonctionnalité d'instance réservée
knative.aliyun.com/reserve-instance-type: <type> Définit le type d'instance. Valeurs prises en charge : eci (par défaut), ecs, acs
Les instances réservées fonctionnent en continu et engendrent des frais même lorsqu'aucun trafic n'est traité. Consultez la documentation sur la Facturation pour plus de détails.

Choisir un type d'instance

Utilisez le tableau suivant pour sélectionner le type d'instance adapté à votre charge de travail :

Type d'instance Idéal pour Requiert
ECI (par défaut) Charges de travail serverless polyvalentes ; aucune gestion de nœud nécessaire ACK Virtual Node
ACS Charges de travail nécessitant un contrôle précis de la classe de calcul et des niveaux de qualité ACK Virtual Node
ECS Charges de travail GPU ou nécessitant un type d'instance ECS spécifique Un nœud ECS compatible

Si vous hésitez sur le type à utiliser, commencez par ECI. Cette option couvre la plupart des scénarios polyvalents sans configuration supplémentaire au-delà d'ACK Virtual Node.

Configurer des instances réservées ECI

Elastic Container Instance (ECI) est le type d'instance réservée par défaut. Utilisez l'annotation knative.aliyun.com/reserve-instance-eci-use-specs pour spécifier la taille des ressources, soit par type d'instance, soit par CPU et mémoire.

Spécification par type d'instance

L'exemple suivant spécifie ecs.t6-c1m1.large et ecs.t5-lc1m2.small comme types d'instance candidats :

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

Spécification par CPU et mémoire

Si vous n'avez pas besoin d'un type d'instance spécifique, définissez les ressources CPU et mémoire requises. L'exemple suivant spécifie une instance avec 1 cœur et 2 GiB de mémoire :

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

Configurer des instances réservées ACS

Les instances réservées Alibaba Cloud Container Compute Service (ACS) vous permettent de spécifier la classe de calcul et les niveaux de qualité. Pour utiliser ACS, installez ACK Virtual Node et ajoutez l'annotation knative.aliyun.com/reserve-instance-type: acs.

Spécification par classe de calcul et qualité

Utilisez knative.aliyun.com/reserve-instance-acs-compute-class pour définir la classe de calcul et knative.aliyun.com/reserve-instance-acs-compute-qos pour définir la qualité de calcul. Ces deux annotations sont facultatives.

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
        # (Optional) Compute class for the ACS pod
        knative.aliyun.com/reserve-instance-acs-compute-class: "general-purpose"
        # (Optional) Compute quality for the 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"

Spécification par CPU et mémoire

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"

Configurer des instances réservées ECS

Utilisez un type d'instance ECS moins coûteux pour réduire les coûts liés à l'inactivité. Les instances réservées ECS sont particulièrement utiles pour les charges de travail GPU.

Charges de travail GPU

L'exemple suivant configure ecs.gn6i-c4g1.xlarge en tant qu'instance réservée GPU aux spécifications réduites pour un service d'inférence Qwen. L'instance standard utilise un GPU complet, tandis que l'instance réservée utilise une spécification GPU plus petite pour traiter la première requête à moindre coût.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  labels:
    release: qwen
  name: qwen
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/metric: "concurrency"
        # Enable and configure an ECS reserved instance. You can configure one or more instance types.
        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:
          # Resource configuration for the standard instance
          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

Spécification par CPU et mémoire

L'exemple suivant spécifie une instance ECS réservée avec 1 cœur et 2 GiB de mémoire :

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"

Configurer un pool d'instances réservées

Une seule instance réservée traite la première requête après une période d'inactivité. Pour les services qui reçoivent régulièrement des pics de trafic soudains, étendez cette capacité à un pool en définissant le nombre de réplicas avec knative.aliyun.com/reserve-instance-replicas.

L'exemple suivant crée un pool de trois instances aux spécifications réduites :

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

Application en production

Choisissez le type d'instance le moins coûteux capable d'exécuter votre application et de traiter au moins une requête de manière fiable. L'instance réservée ne doit gérer le trafic que pendant la brève période précédant la disponibilité des instances standard. Elle n'a pas besoin de correspondre aux spécifications de l'instance standard.

Utilisez un pool réservé pour les services sujets à de fortes variations de trafic. Si votre service reçoit des pics de trafic soudains, configurez plusieurs réplicas à l'aide de knative.aliyun.com/reserve-instance-replicas pour absorber plus efficacement la charge initiale.

Tenez compte de la facturation continue lors du dimensionnement des instances réservées. Les instances réservées engendrent des frais en permanence, y compris pendant les périodes d'inactivité sans trafic. Utilisez le type d'instance le plus petit capable de traiter une seule requête afin de limiter les coûts d'inactivité.

Facturation

Les instances réservées fonctionnent en continu et engendrent des frais, y compris pendant les périodes sans trafic. Consultez la documentation relative à la facturation pour chaque type d'instance :

Étapes suivantes