Neste documento, descrevemos como usar o streaming de imagens para extrair imagens de contêiner. em jobs de contêineres em lote.
O streaming de imagens permite que os jobs do Batch sejam inicializados sem esperar que uma imagem do contêiner termine o download, 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 antes, revise Introdução ao Batch e ativar o Batch. 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 é 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 fez 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,
atualizar 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 lote só oferece suporte ao streaming de imagens para imagens de contêiner que são armazenadas no Artifact Registry. Se você usa o Container Registry para gerenciar as imagens de contêiner, é possível transição para o Artifact Registry.
- É necessário executar as VMs do job em lote 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.
- Quando você usa o streaming de imagem, os executáveis de contêineres
são compatíveis apenas com os seguintes campos:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- Imagens de contêiner com camadas vazias ou camadas duplicadas não são aceitas.
Criar um job que use o streaming de imagens
Crie um job de contêiner do Batch que usa o streaming de imagens fazendo o seguinte:
Use a CLI do Google Cloud ou a API REST para
criar um job de contêiner.
Para ativar o streaming de imagens para um contêiner executável, defina
Campo enableImageStreaming
como true
e definir o campo imageUri
como uma imagem
que é armazenado em
Local do Artifact Registry
que contém o local da VM do job.
"container": {
...
"enableImageStreaming": true
}
Por exemplo, um job que usa streaming de imagem teria um arquivo de configuração 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 do contêiner precisa ser o mesmo que o local do VMs de jobs em lote.PROJECT-ID
: o projeto que contém o contêiner. imagem. 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 tarefas e tarefas.
- Saiba mais sobre as opções de criação de jobs.