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
- Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Batch Job Editor (
roles/batch.jobsEditor
) sul progetto -
Utente service account (
roles/iam.serviceAccountUser
) sul service account del job, che per impostazione predefinita è il service account Compute Engine predefinito
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.
-
Batch Job Editor (
Se non l'hai ancora fatto, abilita l'API Container File System eseguendo il comando seguente:
gcloud services enable containerfilesystem.googleapis.com
- 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 esempious-east1
ous
. 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
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Visualizzare lavori e attività.
- Scopri di più sulle opzioni di creazione dei job.