Utiliser le streaming d'image pour réduire le temps de démarrage des conteneurs

Ce document explique comment utiliser le streaming d'images pour extraire des images de conteneur dans des tâches de conteneur Batch.

Le streaming d'images permet aux tâches 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émarrage plus rapide de l'exécution des tâches

Avant de commencer

  1. 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.
  2. Pour obtenir les autorisations nécessaires pour créer une tâche, demandez à votre administrateur de vous accorder les rôles IAM suivants :

    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.

  3. Si ce n'est pas déjà fait, activez l'API Container File System en exécutant la commande suivante :

    gcloud services enable containerfilesystem.googleapis.com
    
  4. 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 Batch 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 tâche Batch au 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'images, 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 doubles ne sont pas compatibles.

Créer une tâche qui utilise le streaming d'images

Pour créer une tâche de conteneur Batch qui utilise le streaming d'images, procédez comme suit :

Utilisez Google Cloud CLI ou l'API REST pour créer une tâche de conteneur. Pour activer le streaming d'images pour un exécutable de conteneur, définissez enableImageStreaming champ sur true et définissez le imageUri champ sur une image stockée dans un emplacement Artifact Registry qui contient l'emplacement de la VM de la tâche.

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

Par exemple, une tâche qui utilise le streaming d'images aurait un fichier de configuration JSON semblable à celui-ci :

{
    "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 où l'image est stockée, par exemple us-east1 ou us. L'emplacement du conteneur doit être le même que celui des VM de la tâche Batch.
  • PROJECT-ID: projet contenant l'image de conteneur. Si l'ID de votre 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 de conteneur.
  • TAG : tag appliqué à l'image.

Étape suivante

  • Si vous rencontrez des problèmes lors de la création ou de l'exécution d'une tâche, consultez la section Dépannage.
  • Afficher les tâches.
  • Découvrez d'autres options de création de tâches.