Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Accelerate container startup with on-demand image loading

Dernière mise à jour :Aug 11, 2026

Les images de conteneur sont stockées sous forme de couches compressées. Au démarrage d’un conteneur, le runtime télécharge et décompresse l’intégralité des couches avant que le conteneur ne puisse s’exécuter, alors que dans la plupart des cas d’usage, il n’a besoin de lire qu’une partie des données de l’image. Pour les images volumineuses, ce téléchargement inutile constitue la majeure partie du temps de démarrage.

ACK prend en charge le chargement à la demande des images de conteneur via Data Accelerator for Disaggregated Infrastructure (DADI). Au lieu de télécharger l’image complète dès le départ, DADI ne charge que les données réellement nécessaires au conteneur et les décompresse à la volée.

Pour une image NodeBB de 1,34 Go provenant de Docker Hub, le chargement à la demande réduit la phase de téléchargement de l’image de 36 secondes à 4 secondes, et le temps total de démarrage de l’application de 38 secondes à 9 secondes.

Important

Les temps de téléchargement indiqués ci-dessus sont fournis à titre indicatif uniquement. Les performances réelles dépendent de la taille de l’image et des conditions réseau.

Limites

Contrainte Exigence
Type de cluster Clusters managés ACK uniquement.
Version du cluster 1.26 ou ultérieure. Consultez la rubrique Mettre à jour manuellement un cluster.
Runtime des nœuds containerd 1.6.34 ou ultérieur. Consultez la rubrique Mettre à jour un pool de nœuds.
Mode DADI Mode complet uniquement. Le mode Index-only n’est pas pris en charge.

Comportement important : l’activation ou la désactivation de l’accélération des images de conteneur sur un pool de nœuds n’affecte que les nœuds ajoutés par la suite. Pour appliquer cette modification aux nœuds existants, retirez-les du pool de nœuds puis ajoutez-les à nouveau. Consultez les rubriques Supprimer un nœud et Ajouter des nœuds existants.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster managé ACK exécutant Kubernetes 1.26 ou une version ultérieure, avec containerd 1.6.34 ou une version ultérieure comme runtime de nœud

  • Un accès à un registre d’images, soit ACR Enterprise Edition (Standard ou Premium), soit un registre auto-géré

  • Un accès kubectl au cluster

Étape 1 : Obtenir une image accélérée

Les images accélérées utilisent le format DADI. Convertissez une image existante à l’aide de la fonctionnalité de conversion intégrée à ACR Enterprise Edition (recommandée) ou via l’outil open source DADI.

Option 1 : Utiliser ACR Enterprise Edition (recommandé)

ACR Enterprise Edition (Standard ou Premium) convertit automatiquement les images au niveau du dépôt. Lorsque vous poussez une image, ACR crée une copie accélérée sans modifier l’originale. L’image accélérée utilise le même namespace et le même nom de dépôt, avec le suffixe _accelerated ajouté au tag (par exemple, latest devient latest_accelerated).

Pour plus d’informations et connaître les limites, consultez la rubrique Chargement à la demande des images de conteneur.

  1. Connectez-vous à la console Container Registry et sélectionnez une région.

  2. Dans le volet de navigation de gauche, cliquez sur Instances. Sur la page Instances, cliquez sur le nom de l’instance Enterprise Edition.

  3. Dans le volet de navigation de gauche, sélectionnez Repository > Repositories.

  4. Cliquez sur le nom du dépôt. Sur la page Details, cliquez sur Edit dans le coin supérieur gauche.

  5. Dans la boîte de dialogue Modify Settings, activez l’option Accelerated Image, sélectionnez Full Mode, puis cliquez sur Confirm. Les images poussées après cette modification déclenchent automatiquement une tâche de conversion. Pour recevoir une notification à la fin de la conversion, configurez les notifications d’événements avec l’expression _accelerated$. Consultez la rubrique Notifications d’événements.

Option 2 : Utiliser l’outil open source DADI

Utilisez le convertisseur d’images DADI pour convertir manuellement une image.

  1. Installez le snapshotter overlaybd.

    # Download the package for your instance architecture.
    wget https://github.com/containerd/accelerated-container-image/releases/download/v1.2.3/overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm
    rpm -ivh overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm
  2. Installez la couche de périphérique bloc overlaybd.

    # Download the package for your instance architecture.
    wget https://github.com/containerd/overlaybd/releases/download/v1.0.13/overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm
    rpm -ivh overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm
  3. Convertissez l’image. L’exemple suivant convertit une image située dans un dépôt ACR. Pour un registre auto-géré, mettez à jour l’adresse de l’image et les identifiants en conséquence.

    Espace réservé Description
    user:password Identifiants du registre
    xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis Adresse du dépôt de l’image source
    latest Tag de l’image source (paramètre -i)
    latest_obd_new Tag de l’image de sortie (paramètre -o)
    /opt/overlaybd/snapshotter/convertor \
      -u user:password \
      -r xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis \
      -i latest \
      -o latest_obd_new

    Remplacez les espaces réservés suivants :

Étape 2 : Activer l’accélération des images de conteneur sur un pool de nœuds

Les pools de nœuds nouveaux et existants prennent tous deux en charge l’accélération des images de conteneur. Les étapes diffèrent légèrement selon le cas.

Activer pour un nouveau pool de nœuds

  1. Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.

  2. Cliquez sur le nom du cluster. Dans le volet de navigation de gauche, choisissez Nodes > Node Pools.

  3. Lors de la création d’un pool de nœuds, développez les Advanced Options et activez l’option Container Image Acceleration.

Activer pour un pool de nœuds existant

Important

Les modifications apportées à l’accélération des images de conteneur ne s’appliquent qu’aux nœuds ajoutés au pool après la modification. Les nœuds existants ne sont pas affectés ; pour appliquer cette fonctionnalité aux nœuds existants, retirez-les puis ajoutez-les à nouveau. Consultez les rubriques Supprimer un nœud et Ajouter des nœuds existants.

  1. Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.

  2. Cliquez sur le nom du cluster. Dans le volet de navigation de gauche, choisissez Nodes > Node Pools.

  3. Repérez le pool de nœuds et cliquez sur Edit dans la colonne Actions. Dans la section Advanced Options, activez l’option Container Image Acceleration et suivez les instructions à l’écran pour mettre à jour la ConfigMap du pool de nœuds. La colonne Status affiche Updating pendant la mise à jour, puis Active une fois celle-ci terminée.

Étape 3 : Déployer une application avec une image accélérée

Configurer les identifiants de téléchargement d’image

Installez le composant aliyun-acr-acceleration-suite afin que DADI puisse s’authentifier auprès du registre d’images lors du chargement des données d’image à la demande.

  1. Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.

  2. Cliquez sur le nom du cluster. Dans le volet de navigation de gauche, cliquez sur Add-ons.

  3. Sur la page Add-ons, recherchez aliyun-acr-acceleration-suite dans l’onglet Others et cliquez sur Install.

Après l’installation, configurez les identifiants de téléchargement en fonction de votre type de registre :

ACR Enterprise Edition : Installez le plugin sans mot de passe pour injecter automatiquement les identifiants d’accès dans les workloads éligibles. Cela élimine la gestion manuelle des Secrets. Consultez la rubrique Télécharger des images ACR sans secret.

Registre auto-géré : Créez un Secret de type kubernetes.io/dockerconfigjson, puis appliquez-lui un libellé afin que la suite d’accélération puisse l’utiliser.

# Create the Secret.
kubectl create secret docker-registry <SecretName> \
  --docker-server=<RegistryVpcDomain> \
  --docker-username=<UserName> \
  --docker-password=<Password>

# Label the Secret for DADI.
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
Remarque

Si votre application n’a pas besoin d’utiliser un secret pour télécharger une image privée, vous pouvez ignorer cette étape.

Créer l’application

Utilisez un sélecteur de nœud pour planifier les pods sur les nœuds où l’accélération d’image est activée. Le libellé alibabacloud.com/image-accelerate-enabled: "true" est automatiquement appliqué aux nœuds disposant de l’accélération.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        alibabacloud.com/image-accelerate-enabled: "true" # Schedule to acceleration-enabled nodes only.
      containers:
        - name: test
          image: xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis:latest_obd_new # Replace with your accelerated image address.
          command: ["sleep", "3600"]

Appliquez le manifeste :

kubectl apply -f deployment.yaml

Étapes suivantes

Références