In diesem Dokument wird beschrieben, wie Sie mit Image-Streaming Container-Images in Batch-Containerjobs abrufen.
Mit Image-Streaming können Batch-Jobs initialisiert werden, ohne auf den Download eines Container-Images zu warten. Dies bietet folgende Vorteile:
- Geringere Latenzzeit beim Abrufen großer Images
- Schnellerer Start der Jobausführung
Hinweise
- Wenn Sie Batch noch nie verwendet haben, lesen Sie die Informationen unter Erste Schritte mit Batch. Aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen eines Jobs benötigen:
-
Batch Job Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) im Dienstkonto des Jobs. Dies ist standardmäßig das Compute Engine-Standarddienstkonto.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Batch Job Editor (
Aktivieren Sie die Container File System API, falls noch nicht geschehen, indem Sie den folgenden Befehl ausführen:
gcloud services enable containerfilesystem.googleapis.com
- Wenn Ihre Container-Images durch VPC Service Controls geschützt sind, aktualisieren Sie Ihren Dienstperimeter und fügen Sie
containerfilesystem.googleapis.com
hinzu.
Beschränkungen
Für Batch-Image-Streaming gelten die folgenden Einschränkungen:
- Batch unterstützt nur Image-Streaming für Container-Images, die in Artifact Registry gespeichert sind. Wenn Sie Ihre Container-Images derzeit mit Container Registry verwalten, können Sie zu Artifact Registry wechseln.
- Sie müssen die VMs des Batch-Jobs am selben Standort ausführen, an dem Sie das Container-Image in Artifact Registry speichern.
- Container, die das Docker-Image-Manifest der Version 2, Schema 1, verwenden, werden nicht unterstützt.
- Wenn Sie Image-Streaming verwenden, unterstützen ausführbare Container nur die folgenden Felder:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- Container-Images mit leeren oder doppelten Ebenen werden nicht unterstützt.
Job erstellen, der Image-Streaming verwendet
Erstellen Sie einen Batch-Containerjob, der Image-Streaming verwendet. Gehen Sie dazu so vor:
Erstellen Sie einen Containerjob mit der Google Cloud CLI oder der REST API.
Zum Aktivieren von Image-Streaming für einen ausführbaren Container setzen Sie das Feld enableImageStreaming
auf true
und das Feld imageUri
auf ein Image, das an einem Artifact Registry-Speicherort gespeichert ist, der den Standort der VM des Jobs enthält.
"container": {
...
"enableImageStreaming": true
}
Ein Job, der Image-Streaming verwendet, hat beispielsweise eine JSON-Konfigurationsdatei, die in etwa so aussieht:
{
"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"
}
}
Ersetzen Sie die folgenden Werte:
LOCATION
: der regionale oder multiregionale Speicherort des Repositorys, an dem das Image gespeichert ist, z. B.us-east1
oderus
. Der Standort des Containers muss mit dem Standort der VMs des Batch-Jobs übereinstimmen.PROJECT-ID
ist das Projekt, das das Container-Image enthält. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.REPOSITORY
ist der Name des Repositorys, in dem das Image gespeichert ist.IMAGE
ist der Name des Container-Images.TAG
: das auf das Image angewendete Tag.
Nächste Schritte
- Wenn Probleme beim Erstellen oder Ausführen eines Jobs auftreten, lesen Sie die Informationen unter Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Weitere Informationen zu Joberstellungsoptionen