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 warten zu müssen. Das bietet folgende Vorteile:
- Geringere Latenzzeit beim Abrufen großer Images
- Schnellere Ausführung von Jobs
Hinweis
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Artikel Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzererfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:
- Batch Job Editor (
roles/batch.jobsEditor) für das Projekt - Dienstkonto-Nutzer (
roles/iam.serviceAccountUser) für das Dienstkonto des Jobs. Standardmäßig ist das das Standarddienstkonto für Compute Engine.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Batch Job Editor (
Wenn Sie es noch nicht getan haben, aktivieren Sie die Container File System API mit dem folgenden Befehl:
gcloud services enable containerfilesystem.googleapis.com
- Wenn Ihre Container-Images durch VPC Service Controls geschützt sind,
aktualisieren Sie Ihren Dienstperimeter
um
containerfilesystem.googleapis.comeinzuschließen.
Beschränkungen
Für das Batch-Image-Streaming gelten die folgenden Einschränkungen:
- Batch unterstützt Image-Streaming nur für Container-Images, die in Artifact Registry gespeichert sind. Wenn Sie derzeit Container Registry zum Verwalten Ihrer Container-Images verwenden, können Sie zu Artifact Registry wechseln.
- Sie müssen die VMs Ihres Batch-Jobs am selben Standort ausführen, an dem Sie Ihr Container-Image in Artifact Registry speichern.
- Container, die das Docker-Image-Manifest Version 2, Schema 1 verwenden, werden nicht unterstützt.
- Wenn Sie Image-Streaming verwenden,
unterstützen Container-Runnables
nur die folgenden Felder:
imageUricommandsentrypointvolumesenableImageStreaming
- Container-Images mit leeren Ebenen oder doppelten Ebenen werden nicht unterstützt.
Job erstellen, der Image-Streaming verwendet
So erstellen Sie einen Batch-Containerjob, der Image-Streaming verwendet:
Erstellen Sie mit der Google Cloud CLI oder der REST API einen Containerjob.
Wenn Sie Image-Streaming für ein Container-Runnable aktivieren möchten, setzen Sie das
enableImageStreaming Feld auf true und das imageUri Feld auf ein Image,
das an einem
Artifact Registry-Standort
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 so ähnlich 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 Standort des Repository, in dem das Image gespeichert ist, z. B.us-east1oderus. Der Standort des Containers muss mit dem Standort der VMs des Batch-Jobs übereinstimmen.PROJECT-ID: das Projekt, das das Container-Image enthält. Wenn Ihre Projekt-ID einen Doppelpunkt (:) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.REPOSITORY: der Name des Repository, in dem das Image gespeichert ist.IMAGE: der Name des Container-Images.TAG: das auf das Image angewendete Tag.
Nächste Schritte
- Wenn Sie Probleme beim Erstellen oder Ausführen eines Jobs haben, lesen Sie den Abschnitt Fehlerbehebung.
- Jobs und Aufgaben ansehen.
- Weitere Optionen zum Erstellen von Jobs.