Reduza o tempo de implementação com o Artifact Streaming no Azure Kubernetes Service (AKS) com o Azure Container Registry (ACR)

Imagens de contentores grandes podem aumentar o tempo de obtenção da imagem e atrasar a implantação da carga de trabalho. O Artifact Streaming permite transmitir imagens de contentores do Azure Container Registry (ACR) para Azure Kubernetes Service (AKS). O AKS transfere apenas as camadas necessárias para o arranque inicial do pod, reduzindo o tempo necessário para implementar as cargas de trabalho.

Este artigo descreve como ativar e desativar a funcionalidade de Streaming de Artefactos nos seus pools de nós AKS para transmitir artefactos a partir do ACR.

Prerequisites

Limitações

  • Apenas imagens com arquitetura Linux AMD64 são suportadas.
  • Imagens de contentores baseadas no Windows e imagens ARM64 não são suportadas.
  • Apenas a arquitetura AMD64 é suportada para imagens de multiarquitetura.
  • Pools de nós baseados em Ubuntu no AKS devem usar a versão 20.04 ou superior do Ubuntu.
  • Apenas os registos Premium SKU ACR são suportados.
  • Os registos CMK (Customer-Managed Keys) não são suportados.
  • Kubernetes regcred, como imagePullSecrets, não é suportado. A obtenção da imagem a partir do ACR com credenciais de token com mapeamento de âmbito não Entra ou credenciais do utilizador administrador do ACR utiliza, por predefinição, extrações sem Artifact Streaming, mesmo que o conjunto de nós e a imagem estejam ativados para streaming.
  • O Artifact Streaming só suporta transferências de imagens por etiqueta. Artifact Streaming funciona ao resolver pedidos de obtenção de imagens por tag para uma variante da imagem em streaming. Se as extrações de imagens forem feitas por digest, não podes usar o Artefact Streaming.

Ativar Transmissão de Artefato no ACR

  1. Crie um grupo de recursos do Azure para manter sua instância do ACR usando o az group create comando.

    az group create --name myStreamingTest --location westus
    
  2. Crie um novo ACR Premium SKU usando o az acr create comando com a --sku Premium bandeira.

    az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
    
  3. Configure a instância ACR padrão para a sua subscrição usando o comando az configure.

    az configure --defaults acr="mystreamingtest"
    
  4. Envie ou importe uma imagem para o registro usando o az acr import comando.

    az acr import --source docker.io/jupyter/all-spark-notebook --repository jupyter/all-spark-notebook
    
  5. Crie um artefacto de transmissão a partir da imagem utilizando o comando az acr artifact-streaming create.

    az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
    
  6. Verifique a transmissão de artefatos gerada usando o comando az acr manifest list-referrers.

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

Ativar Streaming de Artefactos no AKS

Podes ativar o Artefact Streaming em pools de nós novos ou existentes no teu cluster AKS com integração ACR.

Nota

Se não tiveres um ACR Premium integrado no teu cluster AKS, não podes usar o Artefact Streaming no AKS.

Nota

Os clusters com Node Auto Provisioning (NAP) ativado podem ativar o streaming de artefactos utilizando o campo spec.artifactStreaming.enabled do AKSNodeClass CRD. Defina este campo como true para ativar a transmissão de artefactos para quaisquer nós, novos ou existentes, geridos pelo NAP associados a este CRD AKSNodeClass.

Ativar a Transmissão de Artefactos em um novo grupo de nós

Crie um novo pool de nós AKS com o Artefact Streaming ativado usando o az aks nodepool add comando com a --enable-artifact-streaming bandeira.

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

Ativar a Transmissão de Artefactos num pool de nós existente

Ative o Artefact Streaming num pool de nós AKS existente usando o az aks nodepool update comando com a --enable-artifact-streaming bandeira.

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

Desativar o Streaming de Artefactos num pool de nós existente

Desative a transmissão de artefactos num conjunto de nós AKS existente utilizando o comando az aks nodepool update com o parâmetro --disable-artifact-streaming.

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

Verifique o estado da habilitação do Streaming de Artefactos

Verifique se o Artefact Streaming está ativado num pool de nós AKS usando o az aks nodepool show comando com a --query flag definida para artifactStreamingProfile.

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

Na saída, verifica o Enabled campo. true significa que o Artefact Streaming está ativado, e false significa que o Artefact Streaming está desativado.

Este artigo descreve como ativar e desativar o Artefact Streaming nos seus pools de nós AKS para transmitir artefactos do ACR e reduzir os tempos de implementação. Para saber mais sobre como trabalhar com imagens de contêiner no AKS, consulte Melhores práticas para gestão e segurança de imagens de contêiner no AKS.