Neste documento, descrevemos como usar o streaming de imagens para extrair imagens de contêiner em jobs de contêiner do Batch.
O streaming de imagens permite que os jobs do Batch sejam inicializados sem esperar que o download de uma imagem de contêiner seja concluído, o que oferece os seguintes benefícios:
- Latência reduzida ao extrair imagens grandes
- Tempo mais rápido para iniciar a execução do job
Antes de começar
- Se você nunca usou o Batch, leia Começar a usar o Batch e ative o serviço concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que por padrão é a conta de serviço padrão do Compute Engine
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
Se você ainda não tiver feito isso, ative a API Container File System executando o seguinte comando:
gcloud services enable containerfilesystem.googleapis.com
- Se as imagens de contêiner estiverem protegidas pelo VPC Service Controls,
atualize o perímetro de serviço
para incluir
containerfilesystem.googleapis.com
.
Limitações
O streaming de imagens em lote tem as seguintes limitações:
- O Batch só é compatível com o streaming de imagens para imagens de contêiner armazenadas no Artifact Registry. Se você usa o Container Registry para gerenciar imagens de contêiner, faça a transição para o Artifact Registry.
- Execute as VMs do job do Batch no mesmo local em que você armazena a imagem do contêiner no Artifact Registry.
- Contêineres que usam o manifesto de imagem do Docker versão 2, esquema 1, não são compatíveis.
- Ao usar o streaming de imagem, os executáveis de contêineres só são compatíveis com os seguintes campos:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- Imagens de contêiner com camadas vazias ou duplicadas não são aceitas.
Criar um job que use o streaming de imagens
Crie um job de contêiner do Batch que use o streaming de imagens fazendo o seguinte:
Use a Google Cloud CLI ou a API REST para
criar um job de contêiner.
Para ativar o streaming de imagens em um contêiner executável, defina o campo
enableImageStreaming
como true
e o campo imageUri
como uma imagem
armazenada em um
local do Artifact Registry
que contenha o local da VM do job.
"container": {
...
"enableImageStreaming": true
}
Por exemplo, um job que usa o streaming de imagens teria um arquivo de configuração JSON semelhante a este:
{
"taskGroups": [
{
"taskCount": "1",
"taskCountPerNode": "1",
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG",
"enableImageStreaming": true
}
}
]
}
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
]
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Substitua os seguintes valores:
LOCATION
: o local regional ou multirregional do repositório em que a imagem está armazenada, por exemplo,us-east1
ouus
. O local do contêiner precisa ser o mesmo das VMs do job em lote.PROJECT-ID
: o projeto que contém a imagem do contêiner. Se o ID do projeto contiver dois pontos (:
), consulte Projetos com escopo de domínio.REPOSITORY
: o nome do repositório em que a imagem está armazenada.IMAGE
: o nome da imagem do contêiner.TAG
: a tag aplicada à imagem.
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Ver jobs e tarefas.
- Saiba mais sobre outras opções de criação de jobs.