Questo documento descrive come utilizzare i flussi di immagini per eseguire il pull delle immagini container nei job di container batch.
Il flusso di immagini consente l'inizializzazione dei job batch senza attendere il completamento del download dell'immagine container, il che offre i seguenti vantaggi:
- Latenza ridotta durante il pull di immagini di grandi dimensioni
- Tempi di avvio più rapidi per l'esecuzione del job
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la Guida introduttiva all'utilizzo di Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i ruoli IAM seguenti:
-
Editor job batch (
roles/batch.jobsEditor
) nel progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
Se non lo hai già fatto, abilita l'API Container File System eseguendo questo comando:
gcloud services enable containerfilesystem.googleapis.com
- Se le immagini container sono protette dai Controlli di servizio VPC, aggiorna il perimetro di servizio in modo da includere
containerfilesystem.googleapis.com
.
Limitazioni
Il flusso di immagini in batch presenta le seguenti limitazioni:
- Batch supporta solo il flusso di immagini 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 località in cui archivi l'immagine container in Artifact Registry.
- I container che utilizzano la versione 2 del manifest dell'immagine Docker, schema 1, non sono supportati.
- Quando utilizzi il flusso 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 il flusso di immagini
Crea un job di container batch che utilizzi il flusso di immagini procedendo nel seguente modo:
Utilizza l'interfaccia a riga di comando o l'API REST di Google Cloud CLI per creare un job container.
Per abilitare il flusso di immagini per un container eseguibile, imposta il campo enableImageStreaming
su true
e imposta il campo imageUri
su un'immagine archiviata in una località di Artifact Registry contenente la posizione della VM del job.
"container": {
...
"enableImageStreaming": true
}
Ad esempio, un job che utilizza il flusso 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 località a livello di una o più regioni del repository in cui è archiviata l'immagine, ad esempious-east1
ous
. La località del container deve corrispondere a quella delle VM del job batch.PROJECT-ID
: il progetto che contiene l'immagine container. Se l'ID progetto contiene i due punti (:
), consulta Progetti con ambito di 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
- In caso di problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni per la creazione di job.