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.
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
kubectlau 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.
Connectez-vous à la console Container Registry et sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances. Sur la page Instances, cliquez sur le nom de l’instance Enterprise Edition.
Dans le volet de navigation de gauche, sélectionnez Repository > Repositories.
Cliquez sur le nom du dépôt. Sur la page Details, cliquez sur Edit dans le coin supérieur gauche.
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.
-
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 -
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 -
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:passwordIdentifiants du registre xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redisAdresse du dépôt de l’image source latestTag de l’image source (paramètre -i)latest_obd_newTag 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_newRemplacez 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
Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.
Cliquez sur le nom du cluster. Dans le volet de navigation de gauche, choisissez Nodes > Node Pools.
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
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.
Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.
Cliquez sur le nom du cluster. Dans le volet de navigation de gauche, choisissez Nodes > Node Pools.
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.
Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.
Cliquez sur le nom du cluster. Dans le volet de navigation de gauche, cliquez sur Add-ons.
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"
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
Pour accélérer l’initialisation des workloads et des nœuds à l’aide de snapshots de disques de données, consultez la rubrique Utiliser des snapshots de disques de données pour accélérer le démarrage des applications de grands modèles.