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 em lote sejam inicializados sem esperar o término do download de uma imagem de contêiner, 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 os Primeiros passos com o Batch e ative-o com 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 como conceder papéis, consulte Gerenciar acesso.
Talvez você também consiga receber as permissões necessárias por meio de papéis personalizados ou 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ó oferece suporte ao streaming de imagens para imagens de contêiner armazenadas no Artifact Registry. Se você usa o Container Registry para gerenciar imagens de contêiner, pode fazer a transição para o Artifact Registry.
- Execute as VMs do job em lote no mesmo local em que você armazena a imagem de contêiner no Artifact Registry.
- Contêineres que usam a versão 2 do manifesto de imagem do Docker (esquema 1) não são compatíveis.
- Quando você usa o streaming de imagens, os contêineres executáveis aceitam apenas os seguintes campos:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- Não é possível usar imagens de contêiner com camadas vazias ou duplicadas.
Criar um job que use streaming de imagens
Para criar um job de contêiner do Batch que use streaming de imagens, faça 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 streaming de imagens teria um arquivo de configuração JSON semelhante ao seguinte:
{
"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 do 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.
- Confira jobs e tarefas.
- Conheça mais opções de criação de jobs.