本文档介绍了如何使用映像流式传输将容器映像拉取到批处理容器作业中。
映像流式传输使批量作业无需等待即可初始化 完成下载,提供以下 好处:
- 缩短了拉取大型映像时的延迟时间
- 加快开始执行作业的速度
准备工作
- 如果您之前未使用过批处理功能,请参阅开始使用批处理,并完成适用于项目和用户的前提条件,以启用批处理功能。
-
如需获得创建作业所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
项目的 Batch Job Editor (
roles/batch.jobsEditor
) -
Service Account User (
roles/iam.serviceAccountUser
) 服务账号用户 针对作业的服务账号,该账号默认为默认 Compute Engine 服务账号
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
项目的 Batch Job Editor (
如果您尚未启用 Container File System API,请运行以下命令:
gcloud services enable containerfilesystem.googleapis.com
- 如果您的容器映像受 VPC Service Controls 保护,请更新服务边界以添加
containerfilesystem.googleapis.com
。
限制
批量图片串流具有以下限制:
- 批处理仅支持对存储在 Artifact Registry 中的容器映像进行映像流式传输。如果您目前使用 Container Registry 您可以 改用 Artifact Registry。
- 您必须在存储 Artifact Registry 容器映像的位置运行批处理作业的虚拟机。
- 不支持使用 Docker 映像清单版本 2、架构 1 的容器。
- 使用图片流式传输时
容器可运行对象
仅支持以下字段:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- 不支持包含空层或重复层的容器映像。
创建使用映像流式传输的作业
请执行以下操作,创建使用映像流式传输的 Batch 容器作业:
使用 Google Cloud CLI 或 REST API 执行以下操作:
创建容器作业。
如需为可运行的容器启用映像流式传输,请将
将 enableImageStreaming
字段设置为 true
,并将 imageUri
字段设置为图片
存储在
Artifact Registry 位置
包含作业的虚拟机位置。
"container": {
...
"enableImageStreaming": true
}
例如,使用图片串流的作业的 JSON 配置文件类似如下所示:
{
"taskGroups": [
{
"taskCount": "1",
"taskCountPerNode": "1",
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG",
"enableImageStreaming": true
}
}
]
}
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
]
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
替换以下值:
LOCATION
:存储映像的代码库的单区域或多区域位置,例如us-east1
或us
。容器的位置必须与批处理作业的虚拟机的位置相同。PROJECT-ID
:包含容器的项目 图片。如果您的项目 ID 包含英文冒号 (:
),请参阅网域级项目。REPOSITORY
:映像所在代码库的名称 。IMAGE
:容器映像的名称。TAG
:应用于映像的标记。