Azure 容器注册表中的项目流式处理(预览版)

工件流式处理(预览版)是 Azure 容器注册表中的功能,可用于在单个注册表中存储和管理容器镜像。 可以将容器映像流式传输到多个区域中的 Azure Kubernetes 服务(AKS)群集。 此功能使用 AKS 加速 Azure 客户的容器化工作负荷。 通过使用制品流式传输,可以扩展工作负载,而无需等待节点的缓慢拉取时间。

重要

制品流式处理当前为预览版。 有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览版补充使用条款

构件流式传输的工作原理

具有新注册表和现有注册表的客户可以启动特定存储库或标记的项目流式处理。 可以将原始工件和流式工件存储在同一容器注册表中。 即使关闭了工件流式处理,你仍可保持对原始工件和流式工件的访问。

工件流式处理在以下场景中特别有用:

将容器化应用程序部署到多个区域:通过使用项目流式处理,可以将容器映像存储在单个注册表中,并将其流式传输到多个区域中的 AKS 群集。

减少映像拉取延迟:工件流式处理可以根据映像的大小,将 Pod 准备时间缩短超过 15%。 这种减少对于大于 30 GB 的图像尤其有用。 此功能可减少映像拉取延迟,并帮助容器更快地启动。

容器化应用程序的有效缩放:项目流式处理可以更轻松地大规模设计、生成和部署容器化应用程序。

制品流式传输可在各区域间进行,无论是否启动地理复制。 也可以将工件流式传输与专用终结点一起使用。

存储库中制品流式传输的状态(非活动或活动)决定最新推送的兼容映像是否会自动转换。 默认情况下,所有存储库都处于非活动状态,用于项目流式处理。 这意味着,将新的兼容映像推送到存储库时,不会触发工件流式传输,映像也不会自动转换。 若要对新推送的映像启用自动转换,请将存储库中的工件流式传输设置为活动状态。 存储库处于活动状态后,任何新的兼容的容器镜像推送到存储库时,将被自动转换。

定价和可用性

制品流式传输当前仅适用于 高级服务层(SKU)。

使用构件流式传输可能会增加注册表的整体存储消耗。 如果消耗量超过包含的 500 GiB Premium SKU 阈值,可能会产生额外的费用,如 定价中所述。

当前限制和要求

项目流式处理目前为预览版。 适用以下限制:

  • 预览版仅支持采用 Linux AMD64 体系结构的映像。
  • 预览版不支持基于 Windows 的容器映像和 ARM64 映像。
  • 预览版部分支持多体系结构映像;仅支持 AMD64 体系结构。
  • 若要在 AKS 中创建基于 Ubuntu 的节点池,必须使用 Ubuntu 版本 20.04 或更高版本。
  • 对于 Kubernetes,必须使用 Kubernetes 1.26 或更高版本。
  • 目前不支持客户管理密钥 (CMK) 注册。
  • 目前不支持 Kubernetes regcred

使用 Azure 门户 或 Azure CLI 管理工件流管理。 对于 Azure CLI,可以使用 Azure CLI 的本地安装来运行本文中的命令示例。 若要安装或升级,请参阅安装 Azure CLI。 建议使用最新版本的 Azure CLI。 本文中的命令需要 Azure CLI 2.54.0 或更高版本。

注意

如果使用启用了软删除策略的制品流式传输,并且删除了制品,则原始版本和流式传输版本都会被删除。 但是,在保留期内只能 查看或还原 原始版本。

启用和管理工件流式处理

启动工件流式处理,为 Azure 容器注册表中的容器映像启用推送、导入和生成流式工件。 这些说明概述了生成流项目和管理流项目自动转换的过程。

若要启用工件流式传输,必须使用 高级服务层(SKU) 注册表。 如果还没有 注册表,请创建新的注册表 并选择 高级 服务层级,或更改 现有注册表的 SKU

这些示例使用 Azure CLI 来处理位于中国东部 2 区域的资源组中mystreamingtest命名my-streaming-test的高级 Azure 容器注册表,以及示例 Jupyter Notebook 映像。 将这些名称替换为你自己的值。

导入映像并创建项目流式处理

首先,运行 az config 命令,将注册表名称设置为命令的 az acr 默认值:

az config set defaults.acr="mystreamingtest"

如果还没有要使用的映像,请运行 az acr import 命令,从 Docker 中心导入 Jupyter Notebook 映像:

az acr import --source dockerhub.azk8s.cn/jupyter/all-spark-notebook:latest -t jupyter/all-spark-notebook:latest

注意

如果看到 Docker 注册表中的错误,可能是由于 速率限制。 若要避免此错误,请考虑通过使用命令中的--username--password参数az acr import来向 Docker 中心进行身份验证。

若要从映像创建流项目,请运行 az acr artifact-streaming create 命令:

az acr artifact-streaming create --image jupyter/all-spark-notebook:latest

在此过程中会生成操作ID。 如果要停止创建流工件的过程,请使用操作 ID 运行 az acr artifact-streaming 操作取消

az acr artifact-streaming operation cancel --repository jupyter/all-spark-notebook --id c015067a-7463-4a5a-9168-3b17dbe42ca3

生成流项目后,可以使用 az acr manifest list-referrers 列出流项目来确认其创建:

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

管理存储库中新映像的工件流媒体传输

默认情况下,存储库中新推送或导入的映像不会自动启用工件流式传输。 若要确保推送到存储库的新映像自动触发流项目生成,请使用存储库上的 az acr artifact-streaming update 命令:

az acr artifact-streaming update --repository jupyter/all-spark-notebook --enable-streaming true

注意

运行此命令时,存储库中的现有映像不会自动转换。

若要验证自动转换是否正常工作,请向存储库推送新映像,然后运行az acr artifact-streaming operation show命令:

az acr artifact-streaming operation show --image jupyter/all-spark-notebook:newtag

确认转换是否正常工作后,可以将 映像从 ACR 流式传输到 Azure Kubernetes 服务 (AKS) 群集

若要禁用存储库中流项目的自动转换,请运行 az acr artifact-streaming update 并设置为--enable-streamingfalse

az acr artifact-streaming update --repository jupyter/all-spark-notebook --enable-streaming false