Use o streaming de imagens para reduzir o tempo de arranque do contentor

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

  1. 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.
  2. 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:

    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.

  3. Se ainda não o fez, ative a API File System do contentor executando o seguinte comando:

    gcloud services enable containerfilesystem.googleapis.com
    
  4. 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 ou us. 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?