Reducción del tiempo de implementación con Artifact Streaming en Azure Kubernetes Service (AKS) con Azure Container Registry (ACR)

Las imágenes de contenedor de gran tamaño pueden aumentar el tiempo de descarga de las imágenes y retrasar el despliegue de las cargas de trabajo. Artifact Streaming permite transmitir imágenes de contenedor de Azure Container Registry (ACR) a Azure Kubernetes Service (AKS). AKS solo extrae las capas necesarias para el inicio inicial del pod, lo que reduce el tiempo que se tarda en implementar las cargas de trabajo.

En este artículo se describe cómo habilitar y deshabilitar la característica Artifact Streaming en los grupos de nodos de AKS para transmitir artefactos desde ACR.

Requisitos previos

Limitaciones

  • Solo se admiten imágenes con arquitectura AMD64 de Linux.
  • no se admiten imágenes de contenedor basadas en Windows ni imágenes ARM64.
  • Solo se admite la arquitectura AMD64 para imágenes de arquitectura múltiple.
  • Los grupos de nodos basados en Ubuntu en AKS deben usar ubuntu versión 20.04 o posterior.
  • Solo se admiten registros ACR de SKU Premium.
  • No se admiten registros con CMK (claves administradas por el cliente).
  • Kubernetes regcred, por ejemplo imagePullSecrets, no es compatible. Las extracciones de imágenes desde ACR que utilizan credenciales de token sin asignación de ámbito de Entra o credenciales de usuario administrador de ACR se realizan por defecto sin Artifact Streaming, incluso si el grupo de nodos y la imagen tienen habilitado el streaming.
  • Artifact Streaming solo admite la descarga de imágenes por etiqueta. Artifact Streaming funciona resolviendo las solicitudes de imágenes por etiqueta en una variante de streaming de la imagen. Si las solicitudes de imágenes se realizan por resumen, no se puede utilizar Artifact Streaming.

Habilitar el streaming de artefactos en ACR

  1. Cree un grupo de recursos de Azure para que aloje su instancia de ACR mediante el comando az group create.

    az group create --name myStreamingTest --location westus
    
  2. Crea una nueva SKU Premium de ACR mediante el comando az acr create con el indicador --sku Premium.

    az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
    
  3. Configure la instancia de ACR predeterminada para la suscripción mediante el comando az configure.

    az configure --defaults acr="mystreamingtest"
    
  4. Inserte o importe una imagen en el Registro mediante el comando az acr import.

    az acr import --source docker.io/jupyter/all-spark-notebook --repository jupyter/all-spark-notebook
    
  5. Cree un artefacto de streaming a partir de la imagen mediante el comando az acr artifact-streaming create.

    az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
    
  6. Compruebe el streaming de artefactos generado mediante el comando az acr manifest list-referrers.

    az acr manifest list-referrers --name jupyter/all-spark-notebook:latest
    

Habilitar el streaming de artefactos en AKS

Puede habilitar Artifact Streaming en grupos de nodos nuevos o existentes en el clúster de AKS con la integración de ACR.

Nota:

Si no tiene un ACR de nivel Premium integrado con el clúster de AKS, no puede usar Artifact Streaming en AKS.

Nota:

Los clústeres con aprovisionamiento automático de nodos (NAP) habilitado pueden habilitar la transmisión de artefactos mediante el campo spec.artifactStreaming.enabled de la CRD AKSNodeClass. Establezca este campo en true para habilitar la transmisión de artefactos para cualquier nodo administrado por NAP, ya sea nuevo o existente, asociado a esta CRD AKSNodeClass.

Habilitar el streaming de artefactos en un grupo de nodos nuevo

Cree un nuevo grupo de nodos de AKS con Artifact Streaming habilitado mediante el comando az aks nodepool add con el indicador --enable-artifact-streaming.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --enable-artifact-streaming

Habilitación del streaming de artefactos en un grupo de nodos existente

Habilitar Artifact Streaming en un grupo de nodos existente de AKS con el comando az aks nodepool update y la opción --enable-artifact-streaming.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --enable-artifact-streaming

Deshabilitar el streaming de artefactos en un grupo de nodos existente

Desactiva Artifact Streaming en un grupo de nodos de AKS existente mediante el comando az aks nodepool update con el indicador --disable-artifact-streaming.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --disable-artifact-streaming

Comprobación del estado de habilitación de Artifact Streaming

Compruebe si Artifact Streaming está habilitado en un grupo de nodos de AKS mediante el comando az aks nodepool show con el indicador --query establecido en artifactStreamingProfile.

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --query artifactStreamingProfile

En la salida, compruebe el campo Enabled. true significa que artifact Streaming está habilitado y false significa que Artifact Streaming está deshabilitado.

En este artículo se describe cómo habilitar y deshabilitar Artifact Streaming en los grupos de nodos de AKS para transmitir artefactos desde ACR y reducir los tiempos de implementación. Para más información sobre cómo trabajar con imágenes de contenedor en AKS, consulte Procedimientos recomendados para la administración y la protección de las imágenes de contenedor en AKS.