Traditionnellement, l'exécution d'un conteneur nécessite de télécharger et de décompresser l'intégralité de l'image avant le démarrage. Or, un conteneur n'a souvent besoin que d'une fraction des données de l'image pour démarrer, ce qui allonge les temps de démarrage. La fonctionnalité de chargement à la demande de Container Registry Enterprise Edition résout ce problème en téléchargeant et en décompressant uniquement les données d'image essentielles au démarrage, et non l'image complète. Cette méthode accélère considérablement le déploiement des applications et améliore l'élasticité de la mise à l'échelle.
Prérequis
-
Un cluster ACK pris en charge est disponible.
RemarqueVous pouvez utiliser des images accélérées dans les clusters ACK managés ou dédiés de version 1.16.9 ou ultérieure, ainsi que dans les clusters ACK Edge, les clusters ACK Serverless, les clusters ACK Lingjun et les clusters Alibaba Cloud Container Compute Service (ACS) de version 1.26.3 ou ultérieure. Lors de la création du cluster, le système d'exploitation doit être Alibaba Cloud Linux 2.1903, Alibaba Cloud Linux 3.2104, Alibaba Cloud Linux 3.2104 LTS édition 64 bits ARM, Alibaba Cloud Linux UEFI 2.1903 ou CentOS 7.9.
-
Vous avez créé une instance Container Registry Enterprise Edition. Pour plus d'informations, consultez la rubrique Créer une instance Container Registry Enterprise Edition.
ImportantLes éditions d'instance Container Registry Enterprise Edition prises en charge varient selon le mode d'accélération d'image :
Mode complet : les éditions Standard ou Advanced sont prises en charge.
Mode index-only : les éditions Basic, Standard ou Advanced sont prises en charge.
Le VPC de votre cluster ACK ou cluster ACK Serverless est configuré pour votre instance Container Registry Enterprise Edition. Les images accélérées doivent être utilisées au sein d'un VPC. Pour plus d'informations, consultez la rubrique Configurer le contrôle d'accès pour un VPC.
Contexte
La fonctionnalité de chargement à la demande de Container Registry Enterprise Edition vous permet d'utiliser des images accélérées dans vos déploiements. Cela élimine le besoin de télécharger l'image complète et permet une décompression à la volée, ce qui améliore considérablement l'efficacité de la distribution des applications et l'élasticité de la mise à l'échelle. L'effet d'accélération dépend de facteurs tels que la taille de l'image et les conditions réseau du dépôt. Lors d'un test, une application utilisant une image NodeBB de 1,34 Go provenant de Docker Hub a mis 36 secondes pour extraire l'image, avec un temps de démarrage total de 38 secondes. En utilisant une image accélérée, le temps d'extraction a été réduit à 4 secondes et le temps de démarrage total n'était que de 9 secondes.
Limites
Si votre runtime de conteneur est containerd, les dépôts d'images accélérées peuvent utiliser des noms de domaine personnalisés. En raison des limitations de Docker, cette fonctionnalité n'est pas prise en charge si vous utilisez le runtime Docker. Pour plus d'informations, consultez la rubrique Utiliser un nom de domaine personnalisé pour accéder à une instance Container Registry Enterprise Edition.
Le mode index-only ne peut pas être utilisé dans les scénarios Function Compute (FC) ou Serverless App Engine (SAE).
Vous devez convertir manuellement les images existantes en images accélérées.
Disponibilité régionale
La fonctionnalité de chargement à la demande n'est pas disponible dans les régions Alibaba Finance Cloud et Alibaba Gov Cloud.
Convertir en image accélérée
Vous pouvez configurer un dépôt pour convertir automatiquement les images originales envoyées en images accélérées. Le temps de conversion varie selon la taille de l'image. L'image originale n'est pas affectée.
L'image accélérée utilise le même namespace et le même nom de dépôt que l'image originale. Le format du tag est le suivant :
Mode index-only : le tag de l'image accélérée correspond au tag de l'image originale avec le suffixe
_accelerated. Ce mode est pris en charge uniquement par le runtime containerd. Vous ne pouvez pas supprimer le tag de l'image originale tant que l'image accélérée est utilisée.-
Mode complet :
Une image accélérée avec le suffixe
_acceleratedprend en charge les runtimes Docker et containerd.-
Une image accélérée avec le suffixe
_containerd_acceleratedest destinée exclusivement au runtime containerd.Lorsqu'une image avec le suffixe
_containerd_acceleratedest utilisée, vous ne pouvez pas supprimer l'image accélérée ni son image originale.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, cliquez sur l'instance Enterprise Edition que vous souhaitez gérer.
Sur la page des détails de l'instance, dans le volet de navigation de gauche, choisissez .
Sur la page Repositories, cliquez sur le nom du dépôt cible ou cliquez sur Manage dans la colonne Actions. Dans le coin supérieur gauche de la page Basic Information, cliquez sur Edit.
-
Dans la boîte de dialogue Modify Settings, activez l'option Accelerated Image, sélectionnez un mode, puis cliquez sur Confirm.
Full Mode : offre une accélération significative du démarrage des conteneurs. La taille de l'image accélérée générée est d'environ 130 % de la taille de l'image originale. Il faut environ 25 secondes pour générer une image accélérée à partir d'une image originale de 1 Go. Les couches d'image existantes ne sont pas régénérées.
-
index-only mode : offre environ 70 % de l'effet d'accélération du mode complet. La taille de l'image accélérée représente environ 3 % de la taille de l'image originale. Il faut environ 3 secondes pour générer une image accélérée à partir d'une image originale de 1 Go. Les couches d'image pour lesquelles un index a déjà été créé ne sont pas réindexées.
ImportantLe mode index-only est en aperçu public. Nous vous recommandons de le tester dans un environnement de non-production avant de l'utiliser en production.
RemarqueLe mode index-only s'applique uniquement aux images compressées avec
taroutgz. Ce mode ne s'applique pas aux images compressées avec d'autres méthodes, telles quezstd.Le mode index-only doit être utilisé conjointement avec l'image originale, et celle-ci ne peut pas être supprimée. En mode complet, l'image accélérée peut être utilisée de manière indépendante.
Le mode index-only n'est pas pris en charge par le runtime Docker.
Après avoir configuré l'accélération d'image, les images envoyées déclenchent automatiquement des tâches de conversion. Si vous souhaitez recevoir des notifications lorsque la conversion d'image est terminée, vous pouvez configurer des notifications d'événement. Par exemple, définissez l'expression sur
_accelerated$. Pour plus d'informations, consultez la rubrique Configurer des notifications d'événement. -
(Facultatif) Spécifiez une Prefetch File List. Les fichiers de cette liste sont préchargés au démarrage de l'image accélérée. Nous vous recommandons d'utiliser cette fonctionnalité lorsque des fichiers volumineux doivent être lus au démarrage du conteneur.
RemarqueChaque ligne doit contenir un chemin absolu vers un fichier. Pour un répertoire, le chemin doit se terminer par une barre oblique (
/).
Installer le composant d'accélération d'image
Pour démarrer des conteneurs accélérés, vous devez installer le plugin de stockage pour le chargement à la demande sur vos nœuds de travail.
-
Clusters ACK managés et dédiés
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
ImportantLes modifications apportées à l'option Container Image Acceleration ne prennent effet que sur les nœuds ajoutés au pool après la modification. Les nœuds existants ne sont pas affectés ; pour appliquer la fonctionnalité aux nœuds existants, supprimez-les et rajoutez-les. 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.
Recherchez 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 le ConfigMap du pool de nœuds. La colonne Status affiche Updating pendant la mise à jour, puis Active une fois celle-ci terminée.
Autres types de cluster
Vous devez ajouter le libellé d'accélération d'image
alibabacloud.com/image-accelerate-enabled: trueaux nœuds. Cette action active automatiquement la fonctionnalité d'accélération d'image et installe le plugin de stockage d'image lors de l'initialisation du nœud.La méthode d'ajout d'un libellé varie selon le type de cluster :
Type de cluster
Guide de configuration
Cluster ACK Serverless
Cluster ACK Edge
-
Pour les pools de nœuds cloud-side, consultez la rubrique Créer et gérer un pool de nœuds.
-
Pour les pools de nœuds edge, consultez la rubrique Créer un pool de nœuds edge.
Cluster ACK Lingjun
Alibaba Cloud Container Compute Service (ACS)
-
Installez le composant d'accélération d'image.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, cliquez sur Add-ons.
Sur la page Add-ons, recherchez aliyun-acr-acceleration-suite dans la section More et cliquez sur Install.
-
Dans la boîte de dialogue Tips, cliquez sur OK.
Dans le volet de navigation de gauche, choisissez . Sur la page DaemonSets, consultez les détails d'installation du DaemonSet du composant.
Dans le volet de navigation de gauche, choisissez . Sur la page Deployments, consultez les détails d'installation du Deployment du composant.
L'installation du composant est terminée lorsque tous ses pods sont en cours d'exécution.
Activer les images accélérées
-
Configurez les identifiants d'accès au dépôt.
AvertissementConfigurez votre secret d'extraction d'image selon le principe du moindre privilège. Accordez uniquement les autorisations nécessaires pour extraire les images de service utilisées par le cluster. Pour plus d'informations, consultez la rubrique Accorder une politique personnalisée à un utilisateur RAM.
-
Option 1 : Utilisez le composant aliyun-acr-credential-helper.
Si vous avez installé le composant aliyun-acr-credential-helper et l'avez correctement configuré pour votre instance Container Registry Enterprise Edition, aucune autre action n'est nécessaire.
Si vous n'avez pas installé le composant, vous pouvez le faire maintenant. Pour plus d'informations, consultez la rubrique Utiliser le composant aliyun-acr-credential-helper pour extraire des images de conteneur sans secret.
-
Option 2 : Ajoutez un libellé à un secret d'extraction d'image.
RemarqueCette méthode est prise en charge uniquement par le composant aliyun-acr-acceleration-suite de version 0.2.6 ou ultérieure.
Créez un Secret de type kubernetes.io/dockerconfigjson et ajoutez le libellé images.alibabacloud.com/accelerated: true au Secret.
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
-
-
Ajoutez un libellé d'accélération d'image.
Vous pouvez ajouter un libellé d'accélération d'image à une charge de travail, telle qu'un pod ou un Deployment, ou à un namespace entier dans votre cluster ACK ou cluster ACK Serverless. Lorsque vous appliquez un libellé à un namespace, le chargement à la demande est activé pour toutes les charges de travail éligibles au sein de ce namespace, ce qui élimine le besoin de modifier le fichier YAML pour chaque charge de travail. Choisissez la méthode qui convient le mieux à vos besoins.
RemarqueLa clé du libellé est
k8s.aliyun.com/image-accelerate-modeet la valeur eston-demand.-
Ajoutez un libellé d'accélération d'image à une charge de travail.
L'exemple suivant montre comment ajouter un libellé à un pod géré par un Deployment. Exécutez la commande suivante pour modifier le Deployment :
kubectl edit deployment <DeploymentName> -n <DeploymentNamespace>Dans le fichier YAML du Deployment, ajoutez le libellé
k8s.aliyun.com/image-accelerate-mode: on-demand.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx # enable on-demand mode k8s.aliyun.com/image-accelerate-mode: on-demand spec: containers: # your ACR instacne image - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"] -
Ajoutez un libellé d'accélération d'image à un namespace.
-
Ajoutez un libellé d'accélération d'image dans la console.
Connectez-vous à la console ACK, et dans la barre de navigation de gauche, sélectionnez Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Namespaces and Quotas.
Sur la page Namespace, recherchez le namespace cible et cliquez sur Edit dans la colonne Actions.
Dans la boîte de dialogue Edit Namespace, définissez la Variable Key du Tag sur
k8s.aliyun.com/image-accelerate-modeet la Variable Value du Tag suron-demand, puis cliquez sur Confirm.
Ajoutez un libellé d'accélération d'image via la ligne de commande.
-
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demandAprès avoir ajouté le libellé d'accélération et converti une image originale en image accélérée, le composant d'accélération remplace automatiquement l'adresse de l'image originale par l'adresse de l'image accélérée et ajoute un nodeSelector pour planifier les pods sur des nœuds accélérés lors de la création ou des mises à jour de pods au sein du namespace.
-