你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Kubernetes 服务 (AKS) 上使用项目流式处理功能来缩短映像拉取时间(预览)
高性能计算工作负载通常涉及大型映像,这可能导致映像拉取时间长并拖慢工作负载部署速度。 通过 AKS 上的项目流式处理功能,可将容器映像从 Azure 容器注册表 (ACR) 流式传输到 AKS。 AKS 只拉取初始 Pod 启动所需的层,从而缩短拉取映像和部署工作负载所需的时间。
项目流式处理可将 Pod 就绪时间减少 15% 以上(具体取决于映像的大小),并且最适合<30 GB 的映像。 我们的测试显示,<10 GB 的映像的 Pod 启动时间从数分钟缩短到了数秒。 如果有 Pod 需要访问大型文件 (>30 GB),应将其装载为卷,而不是将其构建为层。 这是因为如果 Pod 要求启动该文件,会造成节点拥塞。 如果启动时需要从文件系统读取大量图像,则项目流式处理并不理想。 使用项目流式处理时,Pod 启动将并发进行,而如果不使用此功能,Pod 以串行方式启动。
本文介绍如何在 AKS 节点池上启用项目流式处理功能来流式传输 ACR 中的项目。
重要
AKS 预览功能是可选择启用的自助功能。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
先决条件
- 需要具有 ACR 集成的现有 AKS 群集。 如果没有,可使用来自 AKS 的 ACR 进行身份验证来创建一个。
- 在 ACR 上启用项目流式处理。
- 此功能需要 Kubernetes 1.25 或更高版本。 要查看 AKS 群集版本,请参阅检查可用的 AKS 群集升级。
注意
项目流式处理仅在 Ubuntu 22.04、Ubuntu 20.04 和 Azure Linux 节点池上受支持。 不支持 Windows 节点池。
安装 aks-preview
CLI 扩展
使用
az extension add
命令安装aks-preview
CLI 扩展。az extension add --name aks-preview
使用
az extension update
命令更新扩展,确保已安装最新版本。az extension update --name aks-preview
在订阅中注册 ArtifactStreamingPreview
功能标志
使用
az feature register
命令在订阅中注册ArtifactStreamingPreview
功能标志。az feature register --namespace Microsoft.ContainerService --name ArtifactStreamingPreview
在 ACR 上启用项目流式处理
要在 AKS 上使用项目流式处理,需要在 ACR 上启用它。 有关详细信息,请参阅 ACR 上的项目流式处理。
使用
az group create
命令创建 Azure 资源组来保存 ACR 实例。az group create --name myStreamingTest --location westus
使用带
--sku Premium
标志的az acr create
命令创建新的高级 SKU Azure 容器注册表。az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
使用
az configure
命令为订阅配置默认 ACR 实例。az configure --defaults acr="mystreamingtest"
使用
az acr import
命令将映像推送或导入注册表。az acr import --source docker.io/jupyter/all-spark-notebook:latest --repository jupyter/all-spark-notebook:latest
使用
az acr artifact-streaming create
命令根据映像创建流项目。az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
使用
az acr manifest list-referrers
命令验证所生成的项目流式处理。az acr manifest list-referrers --name jupyter/all-spark-notebook:latest
在 AKS 上启用项目流式处理
在新的节点池上启用项目流式处理
使用
az aks nodepool add
命令和--enable-artifact-streaming
新建启用了项目流式处理的节点池。az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myNodePool \ --enable-artifact-streaming
在现有节点池上启用项目流式处理
使用带有
--enable-artifact-streaming
的az aks nodepool update
命令更新现有节点池以启用项目流式处理。az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myNodePool \ --enable-artifact-streaming
检查是否启用了项目流式处理
现在你已经在高级 ACR 上启用了项目流式处理,并将其连接到了已启用项目流式处理的 AKS 节点池,此群集上有从已启用项目流式处理的 ACR 进行映像拉取的任何新 Pod 部署都将缩短映像拉取时间。
使用
az aks nodepool show
命令检查节点池是否已启用项目流式处理。az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name myNodePool --query artifactStreamingProfile
在输出中,检查
Enabled
字段是否设置为true
。
后续步骤
本文介绍了如何在 AKS 节点池上启用项目流式处理功能来流式传输 ACR 中的项目并缩短映像拉取时间。 若要详细了解如何在 AKS 中使用容器映像,请参阅 AKS 中容器映像管理和安全性的最佳做法。