Ce document explique comment utiliser le streaming d'images pour extraire des images de conteneur dans des jobs de conteneur Batch.
Le streaming d'images permet aux jobs Batch de s'initialiser sans attendre la fin du téléchargement d'une image de conteneur, ce qui présente les avantages suivants :
- Latence réduite lors de l'extraction d'images volumineuses
- Délai plus court avant le début de l'exécution du job
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Éditeur de tâches par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service du job, qui par défaut est le compte de service Compute Engine par défaut
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de tâches par lot (
Si vous ne l'avez pas encore fait, activez l'API Container File System en exécutant la commande suivante :
gcloud services enable containerfilesystem.googleapis.com
- Si vos images de conteneurs sont protégées par VPC Service Controls, mettez à jour votre périmètre de service pour inclure
containerfilesystem.googleapis.com
.
Limites
Le streaming d'images par lot présente les limites suivantes :
- Batch n'est compatible avec le streaming d'images que pour les images de conteneurs stockées dans Artifact Registry. Si vous utilisez actuellement Container Registry pour gérer vos images de conteneurs, vous pouvez passer à Artifact Registry.
- Vous devez exécuter les VM de votre job Batch dans le même emplacement que celui où vous stockez votre image de conteneur dans Artifact Registry.
- Les conteneurs qui utilisent le fichier manifeste d'image Docker version 2, schéma 1 ne sont pas compatibles.
- Lorsque vous utilisez le streaming d'image, les exécutables de conteneurs ne sont compatibles qu'avec les champs suivants :
imageUri
commands
entrypoint
volumes
enableImageStreaming
- Les images de conteneurs comportant des couches vides ou en double ne sont pas acceptées.
Créer un job qui utilise le streaming d'images
Créez un job de conteneur Batch qui utilise le streaming d'images en procédant comme suit :
Utilisez Google Cloud CLI ou l'API REST pour créer un job de conteneur.
Pour activer le streaming d'images pour un conteneur exécutable, définissez le champ enableImageStreaming
sur true
et le champ imageUri
sur une image stockée dans un emplacement Artifact Registry contenant l'emplacement de la VM du job.
"container": {
...
"enableImageStreaming": true
}
Par exemple, une tâche qui utilise le streaming d'images aurait un fichier de configuration JSON semblable à ce qui suit :
{
"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"
}
}
Remplacez les valeurs suivantes :
LOCATION
: emplacement régional ou multirégional du dépôt dans lequel l'image est stockée, par exempleus-east1
ouus
. L'emplacement du conteneur doit être identique à celui des VM du job Batch.PROJECT-ID
: projet contenant l'image du conteneur. Si l'ID du projet contient le signe deux-points (:
), consultez la section Projets à l'échelle du domaine.REPOSITORY
: nom du dépôt où l'image est stockée.IMAGE
: nom de l'image du conteneur.TAG
: tag appliqué à l'image.
Étapes suivantes
- Si vous rencontrez des problèmes pour créer ou exécuter un job, consultez la section Dépannage.
- Afficher les jobs et les tâches
- Découvrez d'autres options de création de tâches.