Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Configure Knative reserved instances

Dernière mise à jour :Sep 12, 2026

Pour les applications au démarrage lent, telles que les applications Java, la politique par défaut de mise à l'échelle à zéro de Knative communautaire peut entraîner une latence élevée lors du démarrage à froid. ACK propose des instances réservées qui maintiennent en fonctionnement des instances chaudes à faible coût pendant les périodes d'inactivité, permettant ainsi une réponse rapide tout en maîtrisant les coûts.

Fonctionnement

Par défaut, Knative réduit le nombre de pods d'un service à zéro lorsque le trafic s'arrête. Une nouvelle requête doit alors attendre la planification des ressources, le téléchargement de l'image et le démarrage de l'application, ce qui peut prendre plusieurs secondes.

Lorsqu'une instance réservée est activée, ce comportement change :

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

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

    • L'instance réservée traite immédiatement la requête.

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

  3. Transfert du trafic — Dès qu'une instance standard est prête, les requêtes suivantes lui sont acheminées.

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

image

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Déployé Knative

  • (Requis pour les instances réservées ECI ou ACS) Installé ACK Virtual Node. Consultez la section Composants

Activer les instances réservées

Ajoutez les annotations suivantes au manifeste de votre service Knative :

Annotation

Description

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

Active les instances réservées

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

Type d'instance. Valeurs valides : eci (par défaut), ecs, acs

Les instances réservées génèrent des frais en continu, même en l'absence de trafic. Consultez la section Facturation .

Choisir un type d'instance

Sélectionnez le type d'instance adapté à votre charge de travail :

Type d'instance

Idéal pour

Prérequis

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 du niveau 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

En cas de doute, commencez par ECI : cette option couvre la plupart des scénarios et ne nécessite que ACK Virtual Node.

Configurer des instances réservées ECI

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

Spécification par type d'instance

Cet exemple utilise 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 plutôt le CPU et la mémoire. Cet exemple utilise 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 paramètres sont facultatifs.

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 d'inactivité. Les instances réservées ECS sont bien adaptées aux charges de travail GPU.

Charges de travail GPU

Cet exemple configure ecs.gn6i-c4g1.xlarge comme instance réservée GPU de faible spécification 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 plus réduite 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

Cet exemple spécifie une instance réservée ECS 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 connaissant des pics de trafic fréquents, étendez la configuration à un pool en utilisant knative.aliyun.com/reserve-instance-replicas. Lorsque le trafic arrive, les instances réservées préchauffées répondent immédiatement pendant que les instances standard montent en puissance ; dès que les instances standard peuvent supporter la charge, le trafic leur est acheminé et le pool réservé revient à zéro.

Cet exemple crée un pool de 3 instances de faible spécification :

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 de manière fiable et de traiter au moins une requête. L'instance réservée n'a besoin de gérer le trafic que jusqu'à ce que les instances standard soient prêtes ; elle n'a pas besoin de correspondre à leurs spécifications.

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

Tenez compte de la facturation continue lors du dimensionnement des instances réservées. Les instances réservées génèrent des frais en permanence, y compris pendant les périodes d'inactivité. Utilisez le type d'instance le plus petit capable de traiter une seule requête afin de maintenir les coûts d'inactivité à un niveau bas.

Surveillance et alertes : Surveillez la mise à l'échelle du service Knative pour vérifier le transfert des instances réservées vers les instances standard. Définissez des alertes de latence de réponse pour les services critiques.

Facturation

Les instances réservées génèrent des frais en continu, même pendant les périodes d'inactivité. Consultez les détails de facturation pour chaque type d'instance :

Étapes suivantes