借助 Azure 容器注册表 (ACR) 在 Azure Kubernetes 服务 (AKS) 上使用制品流式传输缩短部署时间

大型容器映像可以增加映像拉取时间和延迟工作负荷部署。 项目流式处理允许将容器映像从 Azure 容器注册表 (ACR) 流式传输到Azure Kubernetes 服务 (AKS)。 AKS 仅拉取 Pod 首次启动时所需的层,从而缩短部署工作负载所需的时间。

本文介绍如何在 AKS 节点池上启用和禁用项目流式处理功能,以流式传输 ACR 中的项目。

先决条件

局限性

  • 仅支持具有 Linux AMD64 体系结构的映像。
  • 不支持基于Windows的容器映像和 ARM64 映像。
  • 多体系结构映像仅支持 AMD64 体系结构。
  • AKS 中基于 Ubuntu 的节点池必须使用 Ubuntu 20.04 或更高版本。
  • 仅支持高级 SKU ACR 注册表。
  • 注册表不支持 CMK(客户管理的密钥)。
  • 不支持 Kubernetes regcred,例如 imagePullSecrets。 使用 非 Entra 作用域映射令牌凭据ACR 管理员用户凭据 从 ACR 拉取映像时,默认不会使用工件流式传输拉取,即使节点池和映像已启用流式传输也是如此。
  • 制品流式传输仅支持通过标签拉取镜像。 Artifact Streaming 的工作原理是将按标签拉取的镜像解析为该镜像的流式传输变体。 如果图像拉取是通过摘要完成的,则无法使用项目流式处理。

在 ACR 上启用项目流式处理

  1. 使用 az group create 命令创建 Azure 资源组来保存 ACR 实例。

    az group create --name myStreamingTest --location chinanorth3
    
  2. 使用 az acr create 命令并带上 --sku Premium 标志,创建新的高级 SKU 的 ACR。

    az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
    
  3. 使用 az configure 命令为订阅配置默认 ACR 实例。

    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 上启用项目流式处理

你可以在启用了 ACR 集成的 AKS 群集中的新节点池或现有节点池上启用构件流式传输。

注释

如果没有与 AKS 群集集成的高级层 ACR,则无法在 AKS 上使用项目流式处理。

在新的节点池上启用项目流式处理

使用带有 az aks nodepool add 标志的 --enable-artifact-streaming 命令创建已启用工件流式传输的新的 AKS 节点池。

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

在现有节点池上启用项目流式处理

使用带有 az aks nodepool update 标志的 --enable-artifact-streaming 命令为现有 AKS 节点池启用项目流。

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

在现有节点池上禁用制品流式传输

使用带有 az aks nodepool update 标志的 --disable-artifact-streaming 命令,在现有 AKS 节点池中禁用构件流式传输。

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

检查 Artifact Streaming 启用状态

使用 az aks nodepool show 命令,并将 --query 标志设置为 artifactStreamingProfile,检查 AKS 节点池中是否已启用 Artifact Streaming。

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

在输出中,检查 Enabled 字段。 true 表示已启用项目流,并且 false 意味着项目流被禁用。

本文介绍如何在 AKS 节点池上启用和禁用制品流式传输,以便从 ACR 流式传输制品并缩短部署时间。 若要详细了解如何在 AKS 中使用容器映像,请参阅 AKS 中容器映像管理和安全性的最佳做法