Pode controlar as ligações das VMs que executam uma tarefa especificando uma rede com o acesso desejado. Por exemplo, pode especificar uma rede que permita que uma tarefa aceda aos recursos necessários ou limite o acesso para melhorar a segurança. Em alternativa, se não tiver requisitos de rede e não quiser configurar a rede para uma tarefa, ignore a especificação da rede para usar a configuração de rede predefinida.
Para mais informações sobre os conceitos de rede e quando configurar a rede, consulte a vista geral da rede em lote.
Antes de começar
- Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
-
Para receber as autorizações de que precisa para criar uma tarefa que seja executada numa rede específica, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa, que, por predefinição, é a conta de serviço predefinida do Compute Engine -
Para identificar a rede e a sub-rede:
Visitante da rede de computação (
roles/compute.networkViewer
) no projeto
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Editor de tarefas em lote (
-
Identifique a rede que quer
usar para o trabalho. A rede que especificar para uma tarefa tem de cumprir os seguintes
requisitos:
- A rede é uma rede da nuvem virtual privada (VPC) que está no mesmo projeto que a tarefa ou é uma rede da VPC partilhada alojada ou partilhada com o projeto da tarefa.
- A rede inclui uma sub-rede (sub-net) na localização onde quer executar a tarefa.
-
A rede permite o acesso necessário para o seu trabalho. Por exemplo, se o seu trabalho exigir comunicação entre VMs, como um trabalho que usa bibliotecas MPI para comunicar entre tarefas estreitamente associadas, certifique-se de que a rede tem uma regra de firewall que permite ligações entre as VMs do trabalho.
Saiba como configurar regras de firewall de VPC para exemplos de utilização comuns.
-
Se quiser que uma tarefa seja executada numa sub-rede de uma rede de VPC partilhada alojada por outro projeto, o agente do serviço Batch do seu projeto tem de ter autorização para usar essa sub-rede.
Para garantir que o agente do serviço Batch do seu projeto tem as autorizações necessárias para criar uma tarefa que é executada numa sub-rede de uma rede de VPC partilhada, peça ao seu administrador para conceder ao agente do serviço Batch do seu projeto a função de IAM Utilizador da rede de computação (
roles/compute.networkUser
) na sub-rede de VPC partilhada.Para mais informações, consulte a documentação sobre como configurar a VPC partilhada para contas de serviço.
Crie uma tarefa que seja executada numa rede específica
Especifique a rede para uma tarefa quando a estiver a criar. Em concreto, tem de especificar uma rede de VPC e uma sub-rede que esteja localizada onde quer executar esta tarefa.
Se quiser usar um modelo de instância de VM ao criar esta tarefa, tem de especificar a rede no modelo de instância de VM. Caso contrário, siga estes passos para especificar a rede para uma tarefa através da CLI gcloud ou da API Batch.
gcloud
Para criar uma tarefa que é executada numa rede específica através da CLI gcloud, selecione uma das seguintes opções:
- Use flags gcloud para especificar a rede de um trabalho
- Use campos JSON para especificar a rede de uma tarefa
Use flags do gcloud para especificar a rede de uma tarefa
Para criar uma tarefa e usar flags gcloud para especificar a rede da tarefa, conclua os seguintes passos:
Crie um ficheiro JSON que especifique os detalhes de configuração da sua tarefa.
Por exemplo, para criar uma tarefa de script básica, crie um ficheiro JSON com o seguinte conteúdo.
{ "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" } }
Crie a tarefa através do comando
gcloud batch jobs submit
. Para especificar a rede do trabalho, inclua os flags--network
e--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
Substitua o seguinte:
JOB_NAME
: o nome desta tarefa.LOCATION
: a localização para este trabalho.JSON_CONFIGURATION_FILE
: o caminho para o ficheiro JSON com os detalhes de configuração da tarefa.HOST_PROJECT_ID
: o ID do projeto do projeto para a rede que especificar:- Se estiver a usar uma rede VPC partilhada, especifique o projeto anfitrião.
- Caso contrário, especifique o projeto atual.
NETWORK
: o nome de uma rede VPC no projeto atual ou uma rede VPC partilhada alojada ou partilhada com o projeto atual.REGION
: a região onde a sub-rede e as VMs para a tarefa estão localizadas:- Se incluir o campo
allowedLocations
para especificar a localização permitida para as VMs para o trabalho, tem de especificar a mesma região aqui. - Caso contrário, a região tem de ser a mesma que a localização selecionada para a tarefa (
LOCATION
).
- Se incluir o campo
SUBNET
: o nome de uma sub-rede que faz parte da rede da VPC e está localizada na mesma região que as VMs para a tarefa.
Use campos JSON para especificar a rede de uma tarefa
Para criar uma tarefa e usar campos no ficheiro de configuração JSON para especificar a rede para a tarefa, conclua os seguintes passos:
Crie um ficheiro JSON que especifique os detalhes de configuração da sua tarefa. Para especificar a rede para a tarefa, inclua os campos
network
esubnetwork
.Por exemplo, para criar uma tarefa de script básica que seja executada numa rede específica, crie um ficheiro JSON com o seguinte conteúdo.
{ "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" } }
Substitua o seguinte:
HOST_PROJECT_ID
: o ID do projeto do projeto para a rede que especificar:- Se estiver a usar uma rede VPC partilhada, especifique o projeto anfitrião.
- Caso contrário, especifique o projeto atual.
NETWORK
: o nome de uma rede VPC no projeto atual ou uma rede VPC partilhada alojada ou partilhada com o projeto atual.REGION
: a região onde a sub-rede e as VMs para a tarefa estão localizadas:- Se incluir o campo
allowedLocations
para especificar a localização permitida para as VMs para o trabalho, tem de especificar a mesma região aqui. - Caso contrário, a região tem de ser a mesma que a localização selecionada para a tarefa (
LOCATION
).
- Se incluir o campo
SUBNET
: o nome de uma sub-rede que faz parte da rede da VPC e está localizada na mesma região que as VMs para a tarefa.
Crie a tarefa através do comando
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua o seguinte:
JOB_NAME
: o nome desta tarefa.LOCATION
: a localização para este trabalho.JSON_CONFIGURATION_FILE
: o caminho para o ficheiro JSON com os detalhes de configuração da tarefa.
Java
Node.js
Python
API
Para criar uma tarefa através da API Batch, use o método
jobs.create
e especifique os detalhes de configuração da tarefa.
Para especificar a rede para a tarefa, inclua os campos network
e subnetwork
.
Por exemplo, para criar uma tarefa de script básica que é executada numa rede específica, faça o seguinte pedido 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"
}
}
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.LOCATION
: a localização para este trabalho.JOB_NAME
: o nome desta tarefa.HOST_PROJECT_ID
: o ID do projeto do projeto para a rede que especificar:- Se estiver a usar uma rede VPC partilhada, especifique o projeto anfitrião.
- Caso contrário, especifique o projeto atual (
PROJECT_ID
).
NETWORK
: o nome de uma rede VPC no projeto atual ou uma rede VPC partilhada alojada ou partilhada com o projeto atual.REGION
: a região onde a sub-rede e as VMs para a tarefa estão localizadas:- Se incluir o campo
allowedLocations
para especificar a localização permitida para as VMs para o trabalho, tem de especificar a mesma região aqui. - Caso contrário, a região tem de ser a mesma que a localização selecionada para a tarefa (
LOCATION
).
- Se incluir o campo
SUBNET
: o nome de uma sub-rede que faz parte da rede da VPC e está localizada na mesma região que as VMs para a tarefa.
O que se segue?
- Se tiver problemas ao criar ou executar uma tarefa, consulte a secção Resolução de problemas.
- Saiba mais acerca das redes.
- Saiba mais sobre como criar uma tarefa.
- Saiba como ver serviços e tarefas.