Сокращение времени развертывания с помощью потоковой передачи артефактов на Azure Kubernetes Service (AKS) с помощью Реестр контейнеров Azure (ACR)

Большие образы контейнеров могут увеличить время извлечения изображений и отложить развертывание рабочей нагрузки. Потоковая передача артефактов позволяет передавать образы контейнеров из Реестр контейнеров Azure (ACR) в Azure Kubernetes Service (AKS). AKS извлекает только необходимые слои для начального запуска pod, уменьшая время, необходимое для развертывания рабочих нагрузок.

В этой статье описывается, как включить и отключить функцию потоковой передачи артефактов в пулах узлов AKS для потоковой передачи артефактов из ACR.

Предварительные условия

Ограничения

  • Поддерживаются только образы с архитектурой LINUX AMD64.
  • образы контейнеров на основе Windows и образы ARM64 не поддерживаются.
  • Для образов с несколькими архитектурами поддерживается только архитектура AMD64.
  • Пулы узлов на основе Ubuntu в AKS должны использовать Ubuntu версии 20.04 или более поздней.
  • Поддерживаются только реестры ACR SKU класса Premium.
  • Реестры CMK (ключи, управляемые клиентом) не поддерживаются.
  • Kubernetes regcred, например imagePullSecrets, не поддерживается. Извлечение образов из ACR с использованием учетных данных токена с сопоставлением области действия, не относящихся к Entra или учетных данных администратора ACR по умолчанию выполняется без потоковой передачи артефактов, даже если для пула узлов и образа включена потоковая передача.
  • Artifact Streaming поддерживает только загрузку образов по тегам. Artifact Streaming работает следующим образом: запросы на получение образов по тегу преобразуются в потоковый вариант образа. Если загрузка образов выполняется по дайджесту, нельзя использовать Artifact Streaming.

Включение потоковой передачи артефактов в ACR

  1. Создайте группу ресурсов Azure с помощью команды az group create, чтобы содержать экземпляр ACR.

    az group create --name myStreamingTest --location westus
    
  2. Создайте новый SKU ACR уровня "Премиум" с помощью команды az acr create с флагом --sku Premium.

    az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
    
  3. Настройте экземпляр ACR по умолчанию для подписки, используя команду az configure.

    az configure --defaults acr="mystreamingtest"
    
  4. Отправьте или импортируйте образ в реестр с помощью az acr import команды.

    az acr import --source docker.io/jupyter/all-spark-notebook --repository jupyter/all-spark-notebook
    
  5. Создайте артефакт потоковой передачи из образа с помощью команды az acr artifact-streaming create.

    az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
    
  6. Проверьте созданную потоковую передачу артефактов с помощью az acr manifest list-referrers команды.

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

Включение потоковой передачи артефактов в AKS

Вы можете включить потоковую передачу артефактов для новых или существующих пулов узлов в кластере AKS, интегрированном с ACR.

Примечание.

Если у вас нет ACR уровня "Премиум", интегрированного с кластером AKS, вы не сможете использовать функцию потоковой передачи артефактов в AKS.

Примечание.

Кластеры с включённой функцией автоматического выделения узлов (NAP) могут включить потоковую передачу артефактов с помощью поля spec.artifactStreaming.enabledAKSNodeClass CRD. Установите для этого поля значение true, чтобы включить потоковую передачу артефактов для всех новых или существующих узлов, управляемых NAP, связанных с этим CRD AKSNodeClass.

Включение потоковой передачи артефактов в новом пуле узлов

Создайте новый пул узлов AKS с включённой потоковой передачей артефактов с помощью команды az aks nodepool add с флагом --enable-artifact-streaming.

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

Включение потоковой передачи артефактов в существующем пуле узлов

Включите потоковую передачу артефактов в существующем пуле узлов AKS с помощью команды az aks nodepool update с флагом --enable-artifact-streaming.

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

Отключение потоковой передачи артефактов в существующем пуле узлов

Отключите потоковую передачу артефактов для существующего пула узлов AKS с помощью команды az aks nodepool update с флагом --disable-artifact-streaming.

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

Проверьте, включена ли функция Artifact Streaming

Проверьте, включена ли функция Artifact Streaming в пуле узлов AKS, с помощью команды az aks nodepool show с флагом --query, установленным в значение artifactStreamingProfile.

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

В выходных данных проверьте Enabled поле. true означает, что потоковая передача артефактов включена, и false означает, что потоковая передача артефактов отключена.

В этой статье описывается включение и отключение потоковой передачи артефактов в пулах узлов AKS для потоковой передачи артефактов из ACR и уменьшения времени развертывания. Дополнительные сведения о работе с образами контейнеров в AKS см. в рекомендациях по управлению образами контейнеров и безопасности в AKS.