Puedes controlar las conexiones de las VMs que ejecutan un trabajo especificando una red con el acceso que quieras. Por ejemplo, puedes especificar una red que permita que un trabajo acceda a los recursos necesarios o que limite el acceso para mejorar la seguridad. Si no tienes ningún requisito de red y no quieres configurar la red de un trabajo, puedes omitir la especificación de la red para usar la configuración de red predeterminada.
Para obtener más información sobre los conceptos de redes y cuándo configurar las redes, consulta Información general sobre las redes por lotes.
Antes de empezar
- Si no has usado Batch antes, consulta el artículo Empezar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo que se ejecute en una red específica, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine -
Para identificar la red y la subred, haz lo siguiente:
Lector de red de Compute (
roles/compute.networkViewer
) en el proyecto
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Editor de trabajos por lotes (
-
Identifica la red que quieras usar en la tarea. La red que especifiques para un trabajo debe cumplir los siguientes requisitos:
- La red es una red de nube privada virtual (VPC) que está en el mismo proyecto que el trabajo o es una red de VPC compartida que está alojada en el proyecto del trabajo o se comparte con él.
- La red incluye una subred en la ubicación en la que quieres ejecutar el trabajo.
-
La red permite el acceso necesario para tu trabajo. Por ejemplo, si tu trabajo requiere comunicación entre máquinas virtuales (como un trabajo que usa bibliotecas MPI para comunicarse entre tareas estrechamente acopladas), asegúrate de que la red tenga una regla de cortafuegos que permita las conexiones entre las máquinas virtuales del trabajo.
Consulta cómo configurar reglas de cortafuegos de VPC para casos prácticos habituales.
-
Si quieres que un trabajo se ejecute en una subred de una red de VPC compartida alojada en otro proyecto, debes conceder permiso a tu proyecto para que use esa subred a través del agente de servicio de Batch.
Para asegurarte de que el agente de servicio de Batch de tu proyecto tiene los permisos necesarios para crear un trabajo que se ejecute en una subred de una red de VPC compartida, pide a tu administrador que le conceda el rol de gestión de identidades y accesos Usuario de red de Compute (
roles/compute.networkUser
) en la subred de la VPC compartida.Para obtener más información, consulta la documentación sobre cómo configurar una VPC compartida para cuentas de servicio.
Crear un trabajo que se ejecute en una red específica
Especifica la red de un trabajo cuando lo crees. En concreto, debes especificar una red VPC y una subred que se encuentren en la ubicación en la que quieras ejecutar este trabajo.
Si quieres usar una plantilla de instancia de VM al crear este trabajo, debes especificar la red en la plantilla de instancia de VM. De lo contrario, sigue estos pasos para especificar la red de un trabajo mediante la CLI de gcloud o la API Batch.
gcloud
Para crear un trabajo que se ejecute en una red específica mediante la CLI de gcloud, selecciona una de las siguientes opciones:
- Usar marcas de gcloud para especificar la red de un trabajo
- Usar campos JSON para especificar la red de un trabajo
Usar marcas de gcloud para especificar la red de un trabajo
Para crear un trabajo y usar las marcas de gcloud para especificar la red del trabajo, sigue estos pasos:
Crea un archivo JSON que especifique los detalles de configuración del trabajo.
Por ejemplo, para crear un trabajo de secuencia de comandos básico, crea un archivo JSON con el siguiente contenido.
{ "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" } }
Crea el trabajo con el comando
gcloud batch jobs submit
. Para especificar la red del trabajo, incluye las marcas--network
y--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
Haz los cambios siguientes:
JOB_NAME
: el nombre de este trabajo.LOCATION
: la ubicación de este trabajo.JSON_CONFIGURATION_FILE
: la ruta del archivo JSON con los detalles de configuración del trabajo.HOST_PROJECT_ID
: el ID del proyecto del proyecto de la red que especifiques:- Si utilizas una red de VPC compartida, especifica el proyecto host.
- De lo contrario, especifica el proyecto actual.
NETWORK
: el nombre de una red de VPC del proyecto actual o de una red de VPC compartida alojada en el proyecto actual o compartida con él.REGION
: la región en la que se encuentran la subred y las VMs del trabajo:- Si incluye el campo
allowedLocations
para especificar la ubicación permitida de las VMs del trabajo, debe especificar la misma región aquí. - De lo contrario, la región debe ser la misma que la ubicación que selecciones para el trabajo
(
LOCATION
).
- Si incluye el campo
SUBNET
: el nombre de una subred que forma parte de la red de VPC y se encuentra en la misma región que las VMs del trabajo.
Usar campos JSON para especificar la red de un trabajo
Para crear un trabajo y usar campos del archivo de configuración JSON para especificar la red del trabajo, sigue estos pasos:
Crea un archivo JSON que especifique los detalles de configuración del trabajo. Para especificar la red del trabajo, incluye los campos
network
ysubnetwork
.Por ejemplo, para crear un trabajo de secuencia de comandos básico que se ejecute en una red específica, crea un archivo JSON con el siguiente contenido.
{ "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" } }
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto del proyecto de la red que especifiques:- Si utilizas una red de VPC compartida, especifica el proyecto host.
- De lo contrario, especifica el proyecto actual.
NETWORK
: el nombre de una red de VPC del proyecto actual o de una red de VPC compartida alojada en el proyecto actual o compartida con él.REGION
: la región en la que se encuentran la subred y las VMs del trabajo:- Si incluye el campo
allowedLocations
para especificar la ubicación permitida de las VMs del trabajo, debe especificar la misma región aquí. - De lo contrario, la región debe ser la misma que la ubicación que selecciones para el trabajo
(
LOCATION
).
- Si incluye el campo
SUBNET
: el nombre de una subred que forma parte de la red de VPC y se encuentra en la misma región que las VMs del trabajo.
Crea el trabajo con el comando
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Haz los cambios siguientes:
JOB_NAME
: el nombre de este trabajo.LOCATION
: la ubicación de este trabajo.JSON_CONFIGURATION_FILE
: la ruta del archivo JSON con los detalles de configuración del trabajo.
Java
Node.js
Python
API
Para crear un trabajo con la API Batch, usa el método jobs.create
y especifica los detalles de configuración del trabajo.
Para especificar la red del trabajo, incluye los campos network
y subnetwork
.
Por ejemplo, para crear un trabajo de script básico que se ejecute en una red específica, haz la siguiente solicitud 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"
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.LOCATION
: la ubicación de este trabajo.JOB_NAME
: el nombre de este trabajo.HOST_PROJECT_ID
: el ID del proyecto del proyecto de la red que especifiques:- Si utilizas una red de VPC compartida, especifica el proyecto host.
- De lo contrario, especifica el proyecto actual (
PROJECT_ID
).
NETWORK
: el nombre de una red de VPC del proyecto actual o de una red de VPC compartida alojada en el proyecto actual o compartida con él.REGION
: la región en la que se encuentran la subred y las VMs del trabajo:- Si incluye el campo
allowedLocations
para especificar la ubicación permitida de las VMs del trabajo, debe especificar la misma región aquí. - De lo contrario, la región debe ser la misma que la ubicación que selecciones para el trabajo
(
LOCATION
).
- Si incluye el campo
SUBNET
: el nombre de una subred que forma parte de la red de VPC y se encuentra en la misma región que las VMs del trabajo.
Siguientes pasos
- Si tienes problemas para crear o ejecutar un trabajo, consulta la sección Solución de problemas.
- Más información sobre las redes
- Más información sobre cómo crear un trabajo
- Consulta cómo ver trabajos y tareas.