使用映像流式传输缩短容器启动时间

本文档介绍如何使用映像流式传输将容器映像拉取到 Batch 容器作业中。

通过映像流式传输,批处理作业无需等待容器映像下载完成即可初始化,从而具有以下优势:

  • 缩短了拉取大型映像时的延迟时间
  • 更快地开始执行作业

准备工作

限制

批量映像流式传输具有以下限制:

  • Batch 仅支持存储在 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-east1us。容器的位置必须与批处理作业的虚拟机位置相同。
  • PROJECT-ID:包含容器映像的项目。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • REPOSITORY:存储映像的代码库的名称。
  • IMAGE:容器映像的名称。
  • TAG:应用于映像的标记。

后续步骤