Image-Streaming verwenden, um die Containerstartzeit zu verkürzen

In diesem Dokument wird beschrieben, wie Sie mit Image-Streaming Container-Images in Batch-Container-Jobs abrufen.

Mit Image-Streaming können Batchjobs initialisiert werden, ohne auf den Abschluss des Downloads eines Container-Images warten zu müssen. Das bietet folgende Vorteile:

  • Geringere Latenzzeit beim Abrufen großer Images
  • Schnellerer Beginn der Jobausführung

Hinweise

  1. Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Hilfeartikel Batch-Dateien erstellen und ausführen und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
  2. Um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:

    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.

  3. Aktivieren Sie die Container File System API, falls noch nicht geschehen, mit dem folgenden Befehl:

    gcloud services enable containerfilesystem.googleapis.com
    
  4. Wenn Ihre Container-Images durch VPC Service Controls geschützt sind, Dienstperimeter aktualisieren um containerfilesystem.googleapis.com einzuschließen.

Beschränkungen

Für das Batch-Bildstreaming gelten die folgenden Einschränkungen:

  • Batch unterstützt nur Image-Streaming für Container-Images, die werden in Artifact Registry gespeichert. Wenn Sie derzeit Container Registry verwenden, Container-Images haben, können Sie Umstellung auf Artifact Registry.
  • Die VMs Ihres Batchjobs müssen an demselben Speicherort ausgeführt werden, 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, werden in containers runnables nur die folgenden Felder unterstützt:
    • imageUri
    • commands
    • entrypoint
    • volumes
    • enableImageStreaming
  • Container-Images mit leeren Ebenen oder doppelten Ebenen werden nicht unterstützt.

Job erstellen, der Bildstreaming verwendet

So erstellen Sie einen Batch-Containerjob, der Image-Streaming verwendet: Folgendes:

Verwenden Sie die Google Cloud CLI oder REST API, um Erstellen Sie einen Containerjob. Wenn Sie das Bildstreaming für einen ausführbaren Container aktivieren möchten, legen Sie im Feld enableImageStreaming den Wert true und im Feld imageUri ein Image fest, das an einem Speicherort in der Artifact Registry gespeichert ist, der den Speicherort der VM des Jobs enthält.

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

Ein Job, der Bildstreaming verwendet, hat z. B. eine JSON-Datei. wie diese 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-east1 oder us. Die Der Standort des Containers muss mit dem Standort der VMs des Batchjobs.
  • PROJECT-ID: das Projekt, das den Container enthält Bild. Wenn die Projekt-ID einen Doppelpunkt (:) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.
  • REPOSITORY: der Name des Repositorys, in dem sich das Image befindet gespeichert ist.
  • IMAGE ist der Name des Container-Images.
  • TAG: das auf das Image angewendete Tag.

Nächste Schritte