Tradicionalmente, ejecutar un contenedor requiere descargar y descomprimir la imagen completa antes del inicio. Sin embargo, un contenedor a menudo necesita solo una fracción de los datos de la imagen para arrancar, lo que provoca tiempos de inicio prolongados. La función de carga bajo demanda de Container Registry Enterprise Edition soluciona esto al descargar y descomprimir únicamente los datos de la imagen esenciales para el arranque, en lugar de la imagen completa. Este método acelera significativamente el despliegue de aplicaciones y mejora la elasticidad del escalado.
Requisitos previos
-
Debe contar con un clúster de ACK compatible disponible.
NotaPuede usar imágenes aceleradas en clústeres administrados o dedicados de ACK versión 1.16.9 o posterior, así como en clústeres ACK Edge, clústeres ACK Serverless, clústeres ACK Lingjun y clústeres de Alibaba Cloud Container Compute Service (ACS) versión 1.26.3 o posterior. Al crear el clúster, el sistema operativo debe ser Alibaba Cloud Linux 2.1903, Alibaba Cloud Linux 3.2104, Alibaba Cloud Linux 3.2104 LTS 64 bit ARM edition, Alibaba Cloud Linux UEFI 2.1903 o CentOS 7.9.
-
Debe haber creado una instancia de Container Registry Enterprise Edition. Para obtener más información, consulte Create a Container Registry Enterprise Edition instance.
ImportanteLas ediciones compatibles de Container Registry Enterprise Edition varían según el modo de aceleración de imágenes:
Modo completo: se admiten las ediciones Standard y Advanced.
Modo solo índice: se admiten las ediciones Basic, Standard y Advanced.
La VPC de su clúster de ACK o ACK Serverless está configurada para su instancia de Container Registry Enterprise Edition. Las imágenes aceleradas deben usarse dentro de una VPC. Para obtener más información, consulte Configure access control for a VPC.
Contexto
La función de carga bajo demanda de Container Registry Enterprise Edition permite utilizar imágenes aceleradas en sus despliegues. Esto elimina la necesidad de descargar imágenes completas y habilita la descompresión sobre la marcha, lo cual mejora significativamente la eficiencia en la distribución de aplicaciones y la elasticidad del escalado. El efecto de la aceleración depende de factores como el tamaño de la imagen y las condiciones de red del repositorio. En una prueba, una aplicación que utilizaba una imagen de NodeBB de 1.34 GB desde Docker Hub tardó 36 segundos en extraer la imagen, con un tiempo total de inicio de 38 segundos. Al utilizar una imagen acelerada, el tiempo de extracción se redujo a 4 segundos y el tiempo total de inicio fue de solo 9 segundos.
Limitaciones
Si su entorno de ejecución de contenedores es containerd, los repositorios de imágenes aceleradas pueden usar nombres de dominio personalizados. Debido a limitaciones de Docker, esta opción no es compatible si utiliza el entorno de ejecución Docker. Para obtener más información, consulte Use a custom domain name to access a Container Registry Enterprise Edition instance.
El modo solo índice no puede utilizarse en escenarios de Function Compute (FC) ni Serverless App Engine (SAE).
Debe convertir manualmente las imágenes existentes a imágenes aceleradas.
Disponibilidad por región
La función de carga bajo demanda no está disponible en las regiones de Alibaba Finance Cloud ni Alibaba Gov Cloud.
Convertir a una imagen acelerada
Puede configurar un repositorio para que convierta automáticamente las imágenes originales enviadas en imágenes aceleradas. El tiempo de conversión varía según el tamaño de la imagen. La imagen original no se ve afectada.
La imagen acelerada utiliza el mismo espacio de nombres y nombre de repositorio que la imagen original. El formato de la etiqueta es el siguiente:
Modo solo índice: la etiqueta de la imagen acelerada es la etiqueta de la imagen original con el sufijo
_accelerated. Este modo solo es compatible con el entorno de ejecución containerd. No puede eliminar la etiqueta de la imagen original mientras la imagen acelerada esté en uso.-
Modo completo:
Una imagen acelerada con el sufijo
_acceleratedes compatible con los entornos de ejecución Docker y containerd.-
Una imagen acelerada con el sufijo
_containerd_acceleratedes exclusiva para el entorno de ejecución containerd.Cuando una imagen con el sufijo
_containerd_acceleratedestá en uso, no puede eliminar la imagen acelerada ni su imagen original.
Inicie sesión en la consola de Container Registry.
En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, haga clic en Instances.
En la página Instances, haga clic en la instancia de Enterprise Edition que desea gestionar.
En la página de detalles de la instancia, en el panel de navegación izquierdo, elija .
En la página Repositories, haga clic en el nombre del repositorio destino o haga clic en Manage en la columna Actions. En la esquina superior izquierda de la página Basic Information, haga clic en Edit.
-
En el cuadro de diálogo Modify Settings, habilite Accelerated Image, seleccione un modo y luego haga clic en Confirm.
Full Mode: proporciona una aceleración significativa para el inicio del contenedor. El tamaño de la imagen acelerada generada es aproximadamente el 130 % del tamaño de la imagen original. Generar una imagen acelerada a partir de una imagen original de 1 GB toma alrededor de 25 segundos. Las capas de imagen existentes no se regeneran.
-
Modo solo índice: proporciona aproximadamente el 70 % del efecto de aceleración del modo completo. El tamaño de la imagen acelerada es cerca del 3 % del tamaño de la imagen original. Generar una imagen acelerada a partir de una imagen original de 1 GB toma alrededor de 3 segundos. Las capas de imagen para las cuales ya se creó un índice no se vuelven a indexar.
ImportanteEl modo solo índice se encuentra en vista previa pública. Se recomienda probarlo en un entorno que no sea de producción antes de utilizarlo en un entorno productivo.
NotaEl modo solo índice aplica únicamente a imágenes comprimidas con
tarotgz. El modo no aplica a imágenes comprimidas con otros métodos, comozstd.El modo solo índice debe usarse junto con la imagen original, y la imagen original no puede eliminarse. En el modo completo, la imagen acelerada puede usarse de forma independiente.
El entorno de ejecución Docker no admite el modo solo índice.
Después de configurar la aceleración de imágenes, las imágenes enviadas activan automáticamente tareas de conversión. Si desea recibir notificaciones cuando finalice la conversión de imágenes, puede configurar notificaciones de eventos. Por ejemplo, establezca la expresión en
_accelerated$. Para obtener más información, consulte Configure event notifications. -
(Opcional) Especifique una Prefetch File List. Los archivos en esta lista se precargan cuando se inicia la imagen acelerada. Se recomienda utilizar esta función cuando sea necesario leer archivos grandes durante el arranque del contenedor.
NotaCada línea debe contener una ruta absoluta a un archivo. Para un directorio, la ruta debe terminar con una barra diagonal (
/).
Instalar el componente de aceleración de imágenes
Para iniciar contenedores acelerados, debe instalar el plugin de almacenamiento para carga bajo demanda en sus nodos worker.
-
Para admitir imágenes aceleradas DADI, instale el componente ack-dadi para habilitar la aceleración de imágenes en los nodos de un node pool.
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Nodes > Node Pools.
En la página Node Pools, haga clic en el node pool destino y luego en la pestaña Node Components.
Haga clic en Install Node Components y, en el panel que aparece a la derecha, seleccione el componente ack-dadi e instálelo siguiendo las instrucciones.
-
Instale el componente de aceleración de imágenes. (Obligatorio solo para clústeres anteriores a la versión 1.34).
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre del clúster destino. En el panel de navegación izquierdo, haga clic en Add-ons.
En la página Add-ons, busque aliyun-acr-acceleration-suite en la sección More y haga clic en Install.
-
En el cuadro de diálogo Tips, haga clic en OK.
En el panel de navegación izquierdo, elija . En la página DaemonSets, consulte los detalles de instalación del DaemonSet del componente.
En el panel de navegación izquierdo, elija . En la página Deployments, consulte los detalles de instalación del Deployment del componente.
La instalación del componente se completa cuando todos sus pods se encuentran en ejecución.
Habilitar imágenes aceleradas
-
Configure las credenciales de acceso al repositorio.
AvisoConfigure su secreto de extracción de imágenes siguiendo el principio de menor privilegio. Otorgue únicamente los permisos necesarios para extraer las imágenes de servicio utilizadas por el clúster. Para obtener más información, consulte Grant a custom policy to a RAM user.
-
Opción 1: utilice el componente aliyun-acr-credential-helper.
Si ya instaló el componente aliyun-acr-credential-helper y lo configuró correctamente para su instancia de Container Registry Enterprise Edition, no se requiere ninguna acción adicional.
Si no ha instalado el componente, puede hacerlo ahora. Para obtener más información, consulte Use the aliyun-acr-credential-helper component to pull container images without a secret.
-
Opción 2: agregue una etiqueta a un secreto de extracción de imágenes.
NotaEste método solo es compatible con el componente aliyun-acr-acceleration-suite versión 0.2.6 o posterior.
Cree un Secret de tipo kubernetes.io/dockerconfigjson y agregue la etiqueta images.alibabacloud.com/accelerated: true al 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"
-
-
Agregue una etiqueta de aceleración de imágenes.
Puede agregar una etiqueta de aceleración de imágenes a una carga de trabajo, como un pod o un Deployment, o a un espacio de nombres completo en su clúster de ACK o ACK Serverless. Al etiquetar un espacio de nombres, la carga bajo demanda se habilita para todas las cargas de trabajo elegibles dentro de ese espacio de nombres, lo que elimina la necesidad de modificar el archivo YAML de cada carga de trabajo. Elija el método que mejor se adapte a sus requisitos.
NotaLa clave de la etiqueta es
k8s.aliyun.com/image-accelerate-modey el valor eson-demand.-
Agregue una etiqueta de aceleración de imágenes a una carga de trabajo.
El siguiente ejemplo muestra cómo agregar una etiqueta a un pod gestionado por un Deployment. Ejecute el siguiente comando para editar el Deployment:
kubectl edit deployment <DeploymentName> -n <DeploymentNamespace>En el archivo YAML del Deployment, agregue la etiqueta
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"] -
Agregue una etiqueta de aceleración de imágenes a un espacio de nombres.
-
Agregue una etiqueta de aceleración de imágenes desde la consola.
Inicie sesión en la consola de ACK y, en la barra de navegación izquierda, seleccione Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Namespaces and Quotas.
En la página Namespace, busque el espacio de nombres destino y haga clic en Edit en la columna Actions.
En el cuadro de diálogo Edit Namespace, establezca la Variable Key de la Tag en
k8s.aliyun.com/image-accelerate-modey el Variable Value de la Tag enon-demand, y luego haga clic en Confirm.
Agregue una etiqueta de aceleración de imágenes mediante la línea de comandos.
-
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demandDespués de agregar la etiqueta de aceleración y convertir una imagen original en una imagen acelerada, el componente de aceleración reemplaza automáticamente la dirección de la imagen original por la dirección de la imagen acelerada y agrega un nodeSelector para programar pods en nodos acelerados durante la creación o actualización de pods dentro del espacio de nombres.
-