Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Accelerate Knative pod creation with image caches

Dernière mise à jour :Aug 25, 2026

Lors du déploiement de services Knative à partir d'images de conteneur, les images volumineuses peuvent ralentir la création des pods pendant la phase de tirage (pull). Utilisez ECI ImageCache pour pré-générer des snapshots d'images et créer des pods à partir de ceux-ci, réduisant ainsi le temps de démarrage.

Par exemple, le tirage d'une image Apache Flink d'environ 386,26 Mo depuis Docker Hub prend environ 50 secondes sans cache, contre seulement 5 secondes avec un cache.

Ces chiffres sont théoriques. Les gains réels dépendent du nombre d'images, de leur taille et de la connexion réseau au registre.

Fonctionnement

Dans un cluster ACK, les caches d'images sont gérés sous forme de CRD au niveau du cluster nommée ImageCache. La CRD ImageCache est partagée entre tous les namespaces.

Créez un snapshot de cache à partir d'une image, puis utilisez-le pour déployer un pod sur une instance de conteneur élastique. Cette méthode réduit le nombre de couches d'image à télécharger et accélère la création du pod.

Consultez la rubrique Présentation des caches d'images Overview of image caches pour plus d'informations sur la gestion et la facturation.

Prérequis

Assurez-vous de disposer des éléments suivants :

  • Un cluster ACK avec Knative activé

  • kubectl configuré pour se connecter à votre cluster

Créer un ImageCache

  1. Créez un fichier nommé imagecache-secrets-test.yaml :

    L'annotation k8s.aliyun.com/eci-image-cache: "true" active la réutilisation des ImageCaches existants. Si les images à mettre en cache partagent des couches avec un ImageCache existant, cela accélère la mise en cache. Consultez la rubrique Manage ImageCaches pour connaître tous les paramètres configurables.
    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample-test
      annotations:
        k8s.aliyun.com/eci-image-cache: "true" # Enable the reuse of ImageCaches.
    spec:
      images:
      - registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
      - registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
      imageCacheSize:
       25
      retentionDays:
       7
  2. Créez l'ImageCache :

    kubectl create -f imagecache-secrets-test.yaml
  3. Vérifiez que l'ImageCache est prêt :

    kubectl get imagecache imagecache-sample-test

    L'ImageCache est prêt lorsque PHASE indique Ready et que PROGRESS affiche 100% :

    NAME                              AGE   CACHEID                               PHASE   PROGRESS
    imagecache-sample-test            20h   imc-2zeditzeoemfhqor****              Ready    100%

Utiliser un ImageCache pour accélérer la création de pods

Ajoutez des annotations aux metadata du pod du service Knative pour spécifier l'ImageCache. Deux annotations sont disponibles :

Annotation Comportement
k8s.aliyun.com/eci-image-snapshot-id Utilise l'ImageCache spécifié
k8s.aliyun.com/eci-image-cache Sélectionne automatiquement le meilleur ImageCache disponible
Si les deux sont définies, seule k8s.aliyun.com/eci-image-snapshot-id prend effet.

Spécifier un ImageCache

Utilisez l'annotation k8s.aliyun.com/eci-image-snapshot-id pour associer un service Knative à un ImageCache spécifique.

Important

L'ImageCache doit être dans l'état Ready avant la création du pod. Les pods faisant référence à un ImageCache non prêt ne parviennent pas à démarrer.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
spec:
  template:
    metadata:
      labels:
        app: helloworld-go
      annotations:
        k8s.aliyun.com/eci-image-snapshot-id: imc-2ze5tm5gehgtiiga****  # Specify the ImageCache that you want to use.
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56

Sélectionner automatiquement un ImageCache

Utilisez l'annotation k8s.aliyun.com/eci-image-cache: "true" pour permettre à ECI de sélectionner automatiquement le meilleur ImageCache correspondant.

ECI filtre les ImageCaches de la région qui correspondent au stockage temporaire de l'instance, puis en sélectionne un selon les priorités suivantes :

  1. Degré de correspondance : le cache qui correspond le mieux au registre et à la version de l'image du pod.

  2. Taille du cache : parmi les correspondances équivalentes, le cache dont la taille est la plus proche de celle de l'image.

  3. Heure de création : en cas d'égalité, le cache créé le plus récemment.

Si aucun cache ne correspond, ECI tire et met en cache l'image lors de la création du pod. Définissez la politique de tirage d'image sur IfNotPresent pour optimiser l'efficacité de la mise en cache.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
spec:
  template:
    metadata:
      labels:
        app: helloworld-go
      annotations:
        k8s.aliyun.com/eci-image-cache: "true"    # Automatically select an ImageCache.
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56

Étapes suivantes