Puedes controlar las conexiones de las VMs que ejecutan un trabajo si especificas una red con el acceso deseado. 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. Como alternativa, si no tienes requisitos de redes y no deseas configurar las redes para un trabajo, omite la especificación de la red para usar la configuración de redes predeterminada.
Para obtener más información sobre los conceptos de redes y cuándo configurar las redes, consulta Descripción general de las redes de Batch.
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza 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, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Editor de trabajos de Batch (
roles/batch.jobsEditor) en el proyecto - Usuario de la 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:
Visualizador de la red de Compute (
roles/compute.networkViewer) en el proyecto
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
- Editor de trabajos de Batch (
-
Identifica la red que deseas usar para el trabajo. La red que especifiques para un trabajo debe cumplir con los siguientes requisitos:
- La red es una red de nube privada virtual (VPC) que se encuentra en el mismo proyecto que el trabajo o es una red de VPC compartida que aloja el proyecto para el trabajo o se comparte con él.
- La red incluye una subred en la ubicación en la que deseas ejecutar el trabajo.
-
La red permite el acceso necesario para tu trabajo. Por ejemplo, si tu
trabajo requiere comunicación entre VMs, como un
trabajo que usa bibliotecas de MPI
para comunicarse entre tareas estrechamente acopladas, asegúrate de que la red
tenga una regla de firewall que permita las conexiones entre las VMs del trabajo.
Obtén información para configurar reglas de firewall de VPC para casos de uso comunes.
-
Si deseas que un trabajo se ejecute en una subred de una red de VPC compartida que esté
alojada por otro proyecto, se debe otorgar permiso al
agente de servicio de Batch
de tu proyecto para usar esa subred.
Para asegurarte de que el agente de servicio de Batch de tu proyecto tenga los permisos necesarios para crear un trabajo que se ejecute en una subred de una red de VPC compartida, pídele a tu administrador que otorgue el rol de IAM de Usuario de la red de Compute (
roles/compute.networkUser) al agente de servicio de Batch de tu proyecto en la subred de VPC compartida.Para obtener más información, consulta la documentación para configurar la VPC compartida para cuentas de servicio.
Crea un trabajo que se ejecute en una red específica
Especifica la red para un trabajo cuando lo crees. En particular, debes especificar una red de VPC y una subred que se encuentre en la ubicación en la que deseas ejecutar este trabajo.
Si deseas usar una plantilla de instancias de VM mientras creas este trabajo, debes especificar la red en la plantilla de instancias de VM. De lo contrario, sigue los pasos que se indican a continuación para especificar la red de un trabajo con gcloud CLI o la API de Batch.
gcloud
Para crear un trabajo que se ejecute en una red específica con gcloud CLI, selecciona una de las siguientes opciones:
- Usa marcas de gcloud para especificar la red de un trabajo
- Usa campos JSON para especificar la red de un trabajo
Usa marcas de gcloud para especificar la red de un trabajo
Para crear un trabajo y usar marcas de gcloud para especificar la red del trabajo, completa los siguientes pasos:
Crea un archivo JSON que especifique los detalles de configuración de tu 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
gcloud batch jobs submitcomando. Para especificar la red del trabajo, incluye las marcas--networky--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/SUBNETReemplaza lo siguiente:
JOB_NAME: el nombre de este trabajo.LOCATION: la ubicación de este trabajo.JSON_CONFIGURATION_FILE: la ruta de acceso al archivo JSON con los detalles de configuración del trabajo.HOST_PROJECT_ID: el ID del proyecto de la red que especificas:- Si usas una red de VPC compartida, especifica el proyecto host.
- De lo contrario, especifica el proyecto actual.
NETWORK: el nombre de una red de VPC en el proyecto actual o una red de VPC compartida que aloja el proyecto actual o se comparte con él.REGION: la región en la que se encuentran la subred y las VMs del trabajo:- Si incluyes el
allowedLocationscampo para especificar la ubicación permitida para las VMs del trabajo, debes especificar la misma región aquí. - De lo contrario, la región debe ser la misma que la
ubicación que seleccionas para el trabajo
(
LOCATION).
- Si incluyes el
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.
Usa campos JSON para especificar la red de un trabajo
Para crear un trabajo y usar campos en el archivo de configuración JSON para especificar la red del trabajo, completa los siguientes pasos:
Crea un archivo JSON que especifique los detalles de configuración de tu trabajo. Para especificar la red del trabajo, incluye los
networkysubnetworkcampos.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" } }Reemplaza lo siguiente:
HOST_PROJECT_ID: el ID del proyecto de la red que especificas:- Si usas una red de VPC compartida, especifica el proyecto host.
- De lo contrario, especifica el proyecto actual.
NETWORK: el nombre de una red de VPC en el proyecto actual o una red de VPC compartida que aloja el proyecto actual o se comparte con él.REGION: la región en la que se encuentran la subred y las VMs del trabajo:- Si incluyes el
allowedLocationscampo para especificar la ubicación permitida para las VMs del trabajo, debes especificar la misma región aquí. - De lo contrario, la región debe ser la misma que la
ubicación que seleccionas para el trabajo
(
LOCATION).
- Si incluyes el
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
gcloud batch jobs submitcomando.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEReemplaza lo siguiente:
JOB_NAME: el nombre de este trabajo.LOCATION: la ubicación de este trabajo.JSON_CONFIGURATION_FILE: la ruta de acceso al archivo JSON con los detalles de configuración del trabajo.
Java
Node.js
Python
API
Para crear un trabajo con la API de Batch, usa el
jobs.create método
y especifica los detalles de configuración de tu trabajo.
Para especificar la red del trabajo, incluye los
network y subnetwork campos.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que se ejecute en una red específica, realiza 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"
}
}
Reemplaza lo siguiente:
PROJECT_ID: el ID del proyecto.LOCATION: la ubicación de este trabajo.JOB_NAME: el nombre de este trabajo.HOST_PROJECT_ID: el ID del proyecto de la red que especificas:- Si usas 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 en el proyecto actual o una red de VPC compartida que aloja el proyecto actual o se comparte con él.REGION: la región en la que se encuentran la subred y las VMs del trabajo:- Si incluyes el
allowedLocationscampo para especificar la ubicación permitida para las VMs del trabajo, debes especificar la misma región aquí. - De lo contrario, la región debe ser la misma que la
ubicación que seleccionas para el trabajo
(
LOCATION).
- Si incluyes el
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.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Obtén más información sobre las redes.
- Obtén más información para crear un trabajo.
- Obtén información para ver trabajos y tareas.