Puoi controllare le connessioni per le VM che eseguono un job specificando una rete con l'accesso desiderato. Ad esempio, puoi specificare una rete che consenta a un job di accedere alle risorse richieste o limitare l'accesso per migliorare la sicurezza. In alternativa, se non hai requisiti di rete e non vuoi configurare la rete per un job, salta la specifica della rete per utilizzare invece la configurazione di rete predefinita.
Per saperne di più sui concetti di rete e su quando configurare la rete, vedi Panoramica della rete Batch.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la guida Inizia a utilizzare Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job che viene eseguito su una rete specifica, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Editor di job batch (
roles/batch.jobsEditor) sul progetto - Utente account di servizio (
roles/iam.serviceAccountUser) sul service account del job, che per impostazione predefinita è il service account predefinito di Compute Engine -
Per identificare la rete e la subnet:
Compute Network Viewer (
roles/compute.networkViewer) sul progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
- Editor di job batch (
-
Identifica la rete che vuoi utilizzare per il job. La rete specificata per un job deve soddisfare i seguenti requisiti:
- La rete è una rete Virtual Private Cloud (VPC) che si trova nello stesso progetto del job o è una rete VPC condivisa ospitata dal progetto per il job o condivisa con quest'ultimo.
- La rete include una subnet nella località in cui vuoi eseguire il job.
-
La rete consente l'accesso richiesto per il job. Ad esempio, se il
job richiede la comunicazione tra le VM, ad esempio un
job che utilizza le librerie MPI
per comunicare tra attività strettamente accoppiate, assicurati che la rete
abbia una regola firewall che consenta le connessioni tra le VM del job.
Scopri come configurare le regole firewall VPC per i casi d'uso comuni.
-
Se vuoi che un job venga eseguito su una subnet di una rete VPC condiviso che è
ospitata da un altro progetto, all'
agente di servizio Batch
del tuo progetto deve essere concessa l'autorizzazione per utilizzare quella subnet.
Per assicurarti che l'agente di servizio Batch del tuo progetto disponga delle autorizzazioni necessarie per creare un job che viene eseguito su una subnet di una rete VPC condiviso, chiedi all'amministratore di concedere il ruolo IAM Utente di rete (
roles/compute.networkUser) all'agente di servizio Batch del tuo progetto sulla subnet VPC condiviso.
Creare un job che viene eseguito su una rete specifica
Specifica la rete per un job quando lo crei. In particolare, devi specificare una rete VPC e una subnet che si trova nella posizione in cui vuoi eseguire questo job.
Se vuoi utilizzare un template di istanza VM durante la creazione di questo job, devi specificare la rete nel template di istanza VM. In caso contrario, segui questi passaggi per specificare la rete per un job utilizzando la gcloud CLI o l'API Batch.
gcloud
Per creare un job che viene eseguito su una rete specifica utilizzando la gcloud CLI, seleziona una delle seguenti opzioni:
- Utilizzare i flag gcloud per specificare la rete per un job
- Utilizzare i campi JSON per specificare la rete per un job
Utilizzare i flag gcloud per specificare la rete per un job
Per creare un job e utilizzare i flag gcloud per specificare la rete per il job, completa i seguenti passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job.
Ad esempio, per creare un job di script di base, crea un file JSON con i seguenti contenuti.
{ "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 il job utilizzando il
gcloud batch jobs submitcomando. Per specificare la rete del job, includi i flag--networke--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/SUBNETSostituisci quanto segue:
JOB_NAME: il nome di questo job.LOCATION: la località di questo job.JSON_CONFIGURATION_FILE: il percorso del file JSON con i dettagli di configurazione del job.HOST_PROJECT_ID: l' ID progetto del progetto per la rete specificata:- Se utilizzi una rete VPC condiviso, specifica il progetto host.
- In caso contrario, specifica il progetto corrente.
NETWORK: il nome di una rete VPC nel progetto corrente o di una rete VPC condivisa ospitata dal progetto corrente o condivisa con quest'ultimo.REGION: la regione in cui si trovano la subnet per il job e le risorse Compute Engine del job. Per saperne di più, consulta Località.SUBNET: il nome di una subnet che fa parte della rete VPC e si trova nella stessa regione delle risorse Compute Engine del job.
Utilizzare i campi JSON per specificare la rete per un job
Per creare un job e utilizzare i campi nel file di configurazione JSON per specificare la rete per il job, completa i seguenti passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job. Per specificare la rete per il job, includi i
networkesubnetworkcampi.Ad esempio, per creare un job di script di base che viene eseguito su una rete specifica, crea un file JSON con i seguenti contenuti.
{ "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" } }Sostituisci quanto segue:
HOST_PROJECT_ID: l' ID progetto del progetto per la rete specificata:- Se utilizzi una rete VPC condiviso, specifica il progetto host.
- In caso contrario, specifica il progetto corrente.
NETWORK: il nome di una rete VPC nel progetto corrente o di una rete VPC condivisa ospitata dal progetto corrente o condivisa con quest'ultimo.REGION: la regione in cui si trovano la subnet per il job e le risorse Compute Engine del job. Per saperne di più, consulta Località.SUBNET: il nome di una subnet che fa parte della rete VPC e si trova nella stessa regione delle risorse Compute Engine del job.
Crea il job utilizzando il
gcloud batch jobs submitcomando.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILESostituisci quanto segue:
JOB_NAME: il nome di questo job.LOCATION: la località di questo job.JSON_CONFIGURATION_FILE: il percorso del file JSON con i dettagli di configurazione del job.
Java
Node.js
Python
API
Per creare un job utilizzando l'API Batch, utilizza il
jobs.create metodo
e specifica i dettagli di configurazione del job.
Per specificare la rete per il job, includi i
network e subnetwork campi.
Ad esempio, per creare un job di script di base che viene eseguito su una rete specifica, invia la seguente richiesta 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"
}
}
Sostituisci quanto segue:
PROJECT_ID: l' ID progetto del tuo progetto.LOCATION: la località di questo job.JOB_NAME: il nome di questo job.HOST_PROJECT_ID: l' ID progetto del progetto per la rete specificata:- Se utilizzi una rete VPC condiviso, specifica il progetto host.
- In caso contrario, specifica il progetto corrente (
PROJECT_ID).
NETWORK: il nome di una rete VPC nel progetto corrente o di una rete VPC condivisa ospitata dal progetto corrente o condivisa con quest'ultimo.REGION: la regione in cui si trovano la subnet per il job e le risorse Compute Engine del job. Per saperne di più, consulta Località.SUBNET: il nome di una subnet che fa parte della rete VPC e si trova nella stessa regione delle risorse Compute Engine del job.
Passaggi successivi
- Se riscontri problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Scopri di più sulle reti.
- Scopri di più sulla creazione di un job.
- Scopri come visualizzare job e attività.