项目流式处理是 Azure 容器注册表中的一项功能,可用于将容器映像存储在单个注册表中,管理和将容器映像流式传输到多个区域中的 Azure Kubernetes 服务 (AKS) 群集。 此功能旨在使用 AKS 加速 Azure 客户的容器化工作负荷。 使用项目流式处理,可以轻松缩放工作负荷,而无需等待节点的缓慢拉取速度。
用例
下面是使用项目流式处理的几种方案:
将容器化应用程序部署到多个区域:使用项目流式处理,可以将容器映像存储在单个注册表中,并将容器映像管理和流式传输到多个区域中的 AKS 群集。 项目流式处理可在不耗费时间和资源的情况下将容器应用程序部署到多个区域。
减少映像拉取延迟:项目流式处理可以根据映像的大小,缩短超过 15% 的 Pod 准备就绪时间,最适合 < 30GB 的映像。 此功能可减少映像拉取延迟和快速容器启动,这对软件开发人员和系统架构师有利。
有效缩放容器化应用程序:项目流式处理提供了大规模设计、生成和部署容器化应用程序的机会。
项目流式处理特性
下面是项目流式传输的一些简短特性:
具有新注册表和现有注册表的客户可以启动特定存储库或标记的项目流式处理。
通过启动项目流式处理,客户可以将原始项目和流式处理项目存储在 ACR 中。
即使为存储库或项目关闭了项目流式处理,客户仍有权访问原始项目和流式处理项目。
启用了项目流式处理和软删除的客户,删除了一个存储库或项目,则原始版本和项目流式处理版本都会被删除。 但是,仅软删除门户上会提供原始版本。
可用性和定价信息
项目流式处理仅适用于高级服务层级(也称为 SKU)。 项目流式处理可能会增加总体注册表存储消耗量。 如果消耗量超过包含的 500 GiB 高级 SKU 阈值,则按照定价中所述,客户需要支付更多的存储费用。
预览版限制
项目流式处理目前为预览版。 适用以下限制:
- 预览版仅支持采用 Linux AMD64 体系结构的映像。
- 预览版不支持基于 Windows 的容器映像和 ARM64 映像。
- 预览版仅部分支持多体系结构映像,仅支持 AMD64 体系结构。
- 若要在 AKS 中创建基于 Ubuntu 的节点池,请选择 Ubuntu 版本 20.04 或更高版本。
- 对于 Kubernetes,请使用 Kubernetes 1.26 或更高版本或 > 1.25 的 Kubernetes 版本。
- 只有高级 SKU 注册表支持在预览版本中生成流式处理项目。 在预览期间,非高级 SKU 注册表不提供此功能。
- 预览版不支持 CMK(客户管理的密钥)注册表。
- 目前不支持 Kubernetes regcred。
先决条件
- 可以使用本地安装的 Azure CLI 来运行本文中的命令示例。 如果想要在本地使用它,则需要使用 2.54.0 版或更高版本。 运行
az --version以查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
- 登录 Azure 门户。
启动项目流式处理
使用 Azure CLI 命令和 Azure 门户启动项目流式处理,以便为 Azure 容器注册表 (ACR) 中的容器映像推送、导入和生成流项目。 这些说明概述了创建高级 SKU ACR、导入映像、生成流项目和管理项目流式处理操作的过程。 请务必根据需要将占位符替换为实际值。
推送/导入映像并生成流式处理项目 - Azure CLI
项目流式处理功能在“高级”容器注册表服务层级中可用。 若要启动项目流式处理,请使用 Azure CLI 更新注册表(版本 2.54.0 或更高版本)。 若要安装或升级,请参阅安装 Azure CLI。
按照以下常规步骤启动项目流式处理:
注意
如果已有高级容器注册表,则可以跳过此步骤。 如果用户使用的是基本或标准 SKU,以下命令将失败。 该代码是在 Azure CLI 中编写的,可以在交互模式下执行。 请注意,在执行命令之前,应将占位符替换为实际值。
通过以下方法使用高级 SKU 创建新的 Azure 容器注册表 (ACR):
例如,运行 az group create 命令,在
my-streaming-test区域中创建名称为China East 2的 Azure 资源组,然后运行 az acr create 命令,以在该资源组中创建名称为mystreamingtest的高级 Azure 容器注册表。az group create -n my-streaming-test -l chinaeast2 az acr create -n mystreamingtest -g my-streaming-test -l chinaeast2 --sku premium通过以下方法将映像推送或导入注册表:
例如,运行 [az configure] 命令以配置默认 ACR, az acr import 命令将 Jupyter Notebook 映像从 Docker 中心导入到
mystreamingtestACR。az configure --defaults acr="mystreamingtest" az acr import --source docker.io/jupyter/all-spark-notebook:latest -t jupyter/all-spark-notebook:latest从映像创建项目流式处理
启动从指定映像创建流项目。
例如,运行 az acr artifact-streaming create 命令,从
jupyter/all-spark-notebook:latestACR 中的mystreamingtest映像创建流项目。az acr artifact-streaming create --image jupyter/all-spark-notebook:latest注意
在过程中会生成一个操作 ID,供将来引用以验证操作的状态。
在 Azure CLI 中验证生成的项目流式处理。
例如,运行 az acr manifest list-referrers 命令,列出
jupyter/all-spark-notebook:latestACR 中mystreamingtest映像的流项目。az acr manifest list-referrers -n jupyter/all-spark-notebook:latest取消项目流式处理创建(如果需要)
如果转换尚未完成,请取消流式传输项目创建。 这会停止操作。
例如,运行 az acr artifact-streaming operation cancel 命令以取消
jupyter/all-spark-notebook:latestACR 中mystreamingtest映像的转换操作。az acr artifact-streaming operation cancel --repository jupyter/all-spark-notebook --id c015067a-7463-4a5a-9168-3b17dbe42ca3在存储库上启动自动转换
在存储库中为新推送或导入的映像启动自动转换。 启动时,推送到该存储库的新映像将触发生成流式处理项目。
注意
自动转换不适用于现有映像。 可以手动转换现有映像。
例如,运行 az acr artifact-streaming update 命令,在
jupyter/all-spark-notebookACR 中启动对mystreamingtest存储库的自动转换。az acr artifact-streaming update --repository jupyter/all-spark-notebook --enable-streaming true将新映像
jupyter/all-spark-notebook:newtag推送到上述存储库后,验证流式转换进度。例如,运行 az acr artifact-streaming operation show 命令来检查
jupyter/all-spark-notebook:newtagACR 中mystreamingtest图像的转换操作的状态。az acr artifact-streaming operation show --image jupyter/all-spark-notebook:newtag验证转换状态后,现在可以连接到 AKS。 请参阅 AKS 文档。
从存储库中关闭流项目。
例如,运行 az acr artifact-streaming update 命令,在
jupyter/all-spark-notebook:latestACR 中删除mystreamingtest映像的流项目。az acr artifact-streaming update --repository jupyter/all-spark-notebook --enable-streaming false
注意
无论是否启动异地复制,项目流式处理都可以跨区域工作。 项目流式处理可以通过专用终结点工作并附加到它。
推送/导入映像并生成流式处理项目 - Azure 门户
高级 SKU Azure 容器注册表中提供了项目流式处理。 若要启动项目流式处理,请使用 Azure 门户更新注册表。
按照步骤在 Azure 门户中创建项目流式处理。
导航到你的 Azure 容器注册表。
在边侧“菜单”中的“服务”下,选择“存储库”。
选择最新的导入映像。
转换映像并在 Azure 门户中创建项目流式处理。
在“引用者”选项卡中检查从映像生成的流式处理项目。
在 Azure 门户中,可以通过右键单击 存储库窗格来 更改存储库的自动转换状态。 选择 “停止项目流式处理 ”将其 项目流式处理 状态更改为 “非活动”,或 “启动项目流式处理 ”以将其 项目流式处理 状态更改为 “活动”。
注意
存储库(非活动或活动)中的项目流式处理状态确定是否会自动转换新推送的兼容映像。 默认情况下,所有存储库都处于非活动状态,用于项目流式处理。 这意味着,将新的兼容映像推送到存储库时,不会触发项目流式处理,并且不会自动转换映像。 如果要开始自动转换新推送的映像,需要将存储库的项目流式传输到活动状态。 存储库处于活动状态后,推送到存储库的任何新的兼容容器映像都将触发项目流式处理。 这将启动这些图像的自动转换。