您可以通过指定具有所需访问权限的网络来控制运行作业的虚拟机的连接。例如,您可以指定一个网络 访问所需资源或限制访问权限以提高安全性。 或者,如果您没有任何网络要求 不想为作业配置网络,则跳过为作业指定网络, 请改用默认网络配置。
如需详细了解网络概念以及何时配置网络, 请参阅批量网络概览。
准备工作
- 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件。
-
如需获得创建在特定网络上运行的作业所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
项目的 Batch Job Editor (
roles/batch.jobsEditor
) -
Service Account User (
roles/iam.serviceAccountUser
) 服务账号用户 针对作业的服务账号,该账号默认为默认 Compute Engine 服务账号 -
如需识别网络和子网,请执行以下操作:
Compute Network Viewer (
roles/compute.networkViewer
) 针对项目
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
项目的 Batch Job Editor (
-
确定要为作业使用的网络。您为作业指定的网络必须满足以下要求:
- 该网络是与作业位于同一项目中的 Virtual Private Cloud (VPC) 网络,或者是托管作业项目或与作业项目共享的共享 VPC 网络。
- 该网络在您要运行作业的位置包含一个子网。
-
该影音平台允许访问您的作业所需的资源。例如,如果您的
需要虚拟机之间进行通信,例如
使用 MPI 库的作业,
紧密耦合的任务之间进行通信 - 请确保网络
它具有一条允许作业虚拟机之间建立连接的防火墙规则。
了解如何 针对常见用例配置 VPC 防火墙规则。
-
如果您希望在某个共享 VPC 网络的子网上运行作业,
由另一个项目托管,
批处理服务代理
必须获得相应权限才能使用该子网。
为了确保项目的 Batch 服务代理具有必需的 拥有创建在共享 VPC 网络的子网上运行的作业的权限, 请让管理员向项目的 Batch 服务代理授予 共享 VPC 子网的 Compute Network User (
roles/compute.networkUser
) IAM 角色。如需了解详情,请参阅为服务账号设置共享 VPC 文档。
创建在特定网络上运行的作业
在创建作业时为其指定网络。 具体而言,您需要指定一个 VPC 网络 您要运行此作业的子网。
如果您想在创建此作业时使用虚拟机实例模板,则必须在虚拟机实例模板中指定网络。否则,请按照以下步骤使用 gcloud CLI 或 Batch API 为作业指定网络。
gcloud
要使用 gcloud CLI,请选择以下选项之一:
使用 gcloud 标志指定作业的网络
如需创建作业并使用 gcloud 标志指定作业的网络,请执行以下操作: 请完成以下步骤:
创建一个 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." } } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
使用
gcloud batch jobs submit
命令创建作业。 要指定作业的网络,请添加--network
和--subnetwork
标志。gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE \ --network projects/HOST_PROJECT_ID/global/networks/NETWORK \ --subnetwork projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
替换以下内容:
JOB_NAME
:此作业的名称。LOCATION
: 此招聘信息的位置。JSON_CONFIGURATION_FILE
:包含作业配置详细信息的 JSON 文件的路径。HOST_PROJECT_ID
:您指定的网络对应的项目的项目 ID:- 如果您使用的是共享 VPC 网络,请指定主机 项目。
- 否则,请指定当前项目。
NETWORK
: 当前项目中的 VPC 网络 或共享 VPC 网络 由当前项目托管或与当前项目共享的项目。REGION
:作业所用子网和虚拟机所在的区域:- 如果您添加
allowedLocations
字段来指定作业虚拟机的允许位置,则必须在此处指定相同的区域。 - 否则,该区域必须与您为作业选择的位置 (
LOCATION
) 相同。
- 如果您添加
SUBNET
:属于 VPC 网络且与作业所用的虚拟机位于同一区域的子网的名称。
使用 JSON 字段指定作业的影音平台
如需创建作业并使用 JSON 配置文件中的字段指定作业的影音平台,请完成以下步骤:
创建一个 JSON 文件,用于指定作业的配置详细信息。如需为作业指定网络,请添加
network
和subnetwork
字段。例如,要创建一个在 创建包含以下内容的 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." } } ] }, "taskCount": 3 } ], "allocationPolicy": { "network": { "networkInterfaces": [ { "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET" } ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
替换以下内容:
使用
gcloud batch jobs submit
命令创建作业。gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
替换以下内容:
JOB_NAME
:此作业的名称。LOCATION
:此作业的位置。JSON_CONFIGURATION_FILE
: 包含作业配置详情的 JSON 文件。
Java
Node.js
Python
API
要使用 Batch API 创建作业,请使用
jobs.create
方法
并指定作业的配置详情。
如需为作业指定网络,请添加 network
和 subnetwork
字段。
例如,要创建一个在
网络,请发出以下 POST
请求:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy": {
"network": {
"networkInterfaces": [
{
"network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
"subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
}
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
替换以下内容:
PROJECT_ID
:您的项目的项目 ID。LOCATION
:此作业的位置。JOB_NAME
:此作业的名称。HOST_PROJECT_ID
: 项目 ID (针对您指定的网络):- 如果您使用的是共享 VPC 网络,请指定主机 项目。
- 否则,请指定当前项目 (
PROJECT_ID
)。
NETWORK
: 当前项目中的 VPC 网络 或共享 VPC 网络 由当前项目托管或与当前项目共享的项目。REGION
: 子网和虚拟机所在的区域 位于:- 如果您将
allowedLocations
字段 为作业指定允许的虚拟机位置, 必须指定同一区域。 - 否则,该区域必须与您为作业选择的位置 (
LOCATION
) 相同。
- 如果您将
SUBNET
: 子网,属于 该 VPC 网络与 作业的虚拟机数量。