Image-Streaming verwenden, um die Containerstartzeit zu reduzieren

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

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 oder us. 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