Utilizza il flusso di immagini per ridurre il tempo di avvio del container

Questo documento descrive come utilizzare lo streaming di immagini per eseguire il pull delle immagini container nei job container Batch.

Il flusso dell'immagine consente ai job batch di inizializzarsi senza attendere il completamento del download di un'immagine container, il che offre i seguenti vantaggi:

  • Latenza ridotta durante il recupero di immagini di grandi dimensioni
  • Tempo più rapido per iniziare l'esecuzione del job

Prima di iniziare

  1. Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
  2. Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  3. Se non l'hai ancora fatto, abilita l'API Container File System eseguendo il comando seguente:

    gcloud services enable containerfilesystem.googleapis.com
    
  4. Se le immagini container sono protette da Controlli di servizio VPC, aggiorna il perimetro di servizio in modo da includere containerfilesystem.googleapis.com.

Limitazioni

Lo streaming di immagini batch presenta le seguenti limitazioni:

  • Batch supporta lo streaming di immagini solo per le immagini container archiviate in Artifact Registry. Se attualmente utilizzi Container Registry per gestire le immagini container, puoi eseguire la transizione ad Artifact Registry.
  • Devi eseguire le VM del job Batch nella stessa posizione in cui memorizzi l'immagine container in Artifact Registry.
  • I container che utilizzano la versione 2, schema 1 del manifest dell'immagine Docker non sono supportati.
  • Quando utilizzi lo streaming di immagini, i container eseguibili supportano solo i seguenti campi:
    • imageUri
    • commands
    • entrypoint
    • volumes
    • enableImageStreaming
  • Le immagini container con livelli vuoti o duplicati non sono supportate.

Crea un job che utilizza lo streaming di immagini

Crea un job container Batch che utilizza lo streaming di immagini procedendo nel seguente modo:

Utilizza Google Cloud CLI o l'API REST per creare un job contenitore. Per attivare lo streaming di immagini per un container eseguibile, imposta il campo enableImageStreaming su true e il campo imageUri su un'immagine archiviata in una posizione di Artifact Registry che contiene la posizione della VM del job.

"container": {
    ...
    "enableImageStreaming": true
        }

Ad esempio, un job che utilizza lo streaming di immagini avrebbe un file di configurazione JSON simile al seguente:

{
    "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"
    }
}

Sostituisci i seguenti valori:

  • LOCATION: la posizione regionale o multiregionale del repository in cui è archiviata l'immagine, ad esempio us-east1 o us. La posizione del container deve corrispondere a quella delle VM del job Batch.
  • PROJECT-ID: il progetto che contiene l'immagine del container. Se l'ID progetto contiene due punti (:), consulta Progetti basati sul dominio.
  • REPOSITORY: il nome del repository in cui è archiviata l'immagine.
  • IMAGE: il nome dell'immagine container.
  • TAG: il tag applicato all'immagine.

Passaggi successivi