Este documento descreve como usar o streaming de imagens para extrair imagens de contentores para tarefas de contentores em lote.
O streaming de imagens permite que as tarefas em lote sejam inicializadas sem esperar que uma imagem de contentor termine a transferência, o que oferece as seguintes vantagens:
- Latência reduzida ao obter imagens grandes
- Tempo mais rápido para iniciar a execução de tarefas
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, peça ao seu administrador para lhe conceder as seguintes funções de 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 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 (
Se ainda não o fez, ative a API File System do contentor executando o seguinte comando:
gcloud services enable containerfilesystem.googleapis.com
- Se as suas imagens de contentores estiverem protegidas pelos 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ó suporta o streaming de imagens para imagens de contentores que estão armazenadas no Artifact Registry. Se usa atualmente o Container Registry para gerir as imagens de contentores, pode fazer a transição para o Artifact Registry.
- Tem de executar as VMs da tarefa em lote na mesma localização em que armazena a imagem do contentor no Artifact Registry.
- Os contentores que usam a versão 2 do manifesto de imagens do Docker, esquema 1, não são suportados.
- Quando usa o streaming de imagens, os
executáveis de contentores
só suportam os seguintes campos:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- As imagens de contentores com camadas vazias ou duplicadas não são suportadas.
Crie uma tarefa que use o streaming de imagens
Crie uma tarefa de contentor em lote que use o streaming de imagens da seguinte forma:
Use a Google Cloud CLI ou a API REST para criar uma tarefa de contentor.
Para ativar o streaming de imagens para um contentor executável, defina o campo enableImageStreaming
como true
e o campo imageUri
como uma imagem armazenada numa localização do Artifact Registry que contém a localização da VM da tarefa.
"container": {
...
"enableImageStreaming": true
}
Por exemplo, uma tarefa que usa o streaming de imagens teria um ficheiro 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
: a localização regional ou multirregional do repositório onde a imagem está armazenada, por exemplo,us-east1
ouus
. A localização do contentor tem de ser a mesma que a localização das VMs da tarefa em lote.PROJECT-ID
: o projeto que contém a imagem do contentor. Se o ID do projeto contiver dois pontos (:
), consulte o artigo Projetos com âmbito de domínio.REPOSITORY
: o nome do repositório onde a imagem está armazenada.IMAGE
: o nome da imagem do contentor.TAG
: a etiqueta aplicada à imagem.
O que se segue?
- Se tiver problemas ao criar ou executar uma tarefa, consulte a secção Resolução de problemas.
- Ver empregos e tarefas.
- Saiba mais sobre as opções de criação de tarefas.