本文档介绍了如何在创建批量作业时 通过指定 Compute Engine 虚拟机实例模板 来定义 Batch 作业的虚拟机资源。
除非您使用以下方法之一定义作业运行的虚拟机资源类型,否则 Batch 会自动定义这些类型:
- 使用
instances[].policy字段 直接定义作业的虚拟机资源。 大多数 Batch 文档中都演示了此方法。 使用
instances[].instanceTemplate字段 通过模板定义作业的虚拟机资源。 本文档介绍了此方法。如需指定 Batch 未提供作业字段的虚拟机选项,您必须使用模板。如果您想为多个作业指定相同的虚拟机资源,使用模板也会很方便。
准备工作
- 如果您之前未使用过 Batch,请查看 Batch 使用入门 ,并完成 项目和用户的前提条件以启用 Batch。
- 创建 实例模板或 确定 现有实例模板。
-
如需获得创建作业所需的权限,请让您的管理员授予您以下 IAM 角色:
- Batch Job Editor (
roles/batch.jobsEditor) 项目的 - Service Account User (
roles/iam.serviceAccountUser) 在作业的服务账号上,默认情况下为默认 Compute Engine 服务账号 -
通过 Compute Engine 虚拟机实例模板创建作业:
Compute Viewer (
roles/compute.viewer) 虚拟机实例模板的
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
- Batch Job Editor (
使用 Compute Engine 虚拟机实例模板创建作业
本部分提供了有关如何通过现有虚拟机实例模板创建基本脚本作业的示例。您可以使用 gcloud CLI、Batch API、Go、Java、Node.js、Python 或 C++ 通过虚拟机实例模板创建作业。
gcloud
如需使用
gcloud CLI 通过虚拟机实例模板创建作业,请使用 gcloud batch jobs submit 命令
并在作业的 JSON 配置文件中指定虚拟机实例模板。
例如,如需通过虚拟机实例模板创建基本脚本作业,请执行以下操作:
在当前目录中创建一个名为
hello-world-instance-template.json的 JSON 文件,其中包含以下内容:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }替换以下内容:
INSTALL_GPU_DRIVERS:可选。设置为true后,Batch 会提取您在 Compute Engine 虚拟机实例模板中指定的 GPU 类型所需的驱动程序,并代表您安装这些驱动程序。如需了解详情,请参阅如何 创建使用 GPU 的作业。INSTANCE_TEMPLATE_NAME:现有 Compute Engine 虚拟机实例模板的名称。了解如何 创建 和 列出实例模板。
运行以下命令:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
如需使用 Batch API 创建基本作业,请使用
jobs.create方法
并在 allocationPolicy 字段中指定虚拟机实例模板。
例如,如需通过虚拟机实例模板创建基本脚本作业,请使用以下请求:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"instanceTemplate": "INSTANCE_TEMPLATE_NAME"
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
替换以下内容:
PROJECT_ID:项目的 项目 ID 。INSTALL_GPU_DRIVERS:可选。设置为true后,Batch 会提取您在 Compute Engine 虚拟机实例模板中指定的 GPU 类型所需的驱动程序,并代表您安装这些驱动程序。如需了解 详情,请参阅如何创建使用 GPU 的作业。INSTANCE_TEMPLATE_NAME:现有 Compute Engine 虚拟机实例模板的名称。了解如何 创建和 列出实例模板。
Go
Go
如需了解详情,请参阅 Batch Go API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Java
Java
如需了解详情,请参阅 Batch Java API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Node.js
Node.js
如需了解详情,请参阅 Batch Node.js API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Python
Python
如需了解详情,请参阅 Batch Python API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
C++
C++
如需了解详情,请参阅 Batch C++ API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。