このドキュメントでは、イメージ ストリーミングを使用してコンテナ イメージを Batch コンテナ ジョブに pull する方法について説明します。
イメージ ストリーミングを使用すると、コンテナ イメージのダウンロードが完了するのを待たずにバッチジョブを初期化できるため、次のメリットがあります。
- 大きなイメージを pull する際のレイテンシの短縮
- ジョブの実行開始までの時間の短縮
準備
- Batch を以前に使用したことがない場合は、 Batch を使ってみる を確認し、 プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- バッチジョブ編集者 (
roles/batch.jobsEditor) プロジェクトの - ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
- バッチジョブ編集者 (
まだ有効にしていない場合は、次のコマンドを実行して Container File System API を有効にします。
gcloud services enable containerfilesystem.googleapis.com
- コンテナ イメージが VPC Service Controls で保護されている場合は、
サービス境界を更新して
containerfilesystem.googleapis.comを含めます。
制限事項
Batch イメージ ストリーミングには次の制限があります。
- Batch は、Artifact Registry に保存されているコンテナ イメージのイメージ ストリーミングのみをサポートしています。現在 Container Registry を使用してコンテナ イメージを管理している場合は、Artifact Registry に移行できます。
- Batch ジョブの VM は、Artifact Registry にコンテナ イメージを保存するのと同じ ロケーションで実行する必要があります。
- Docker イメージ マニフェスト バージョン 2、スキーマ 1 を使用するコンテナはサポートされていません。
- イメージ ストリーミングを使用する場合、
コンテナ実行可能ファイル
は次のフィールドのみをサポートします。
imageUricommandsentrypointvolumesenableImageStreaming
- 空のレイヤまたは重複するレイヤを含むコンテナ イメージはサポートされていません。
イメージ ストリーミングを使用するジョブを作成する
イメージ ストリーミングを使用する Batch コンテナ ジョブを作成するには、次の操作を行います。
Google Cloud CLI または REST API を使用して
コンテナ ジョブを作成します。
コンテナ実行可能なイメージ ストリーミングを有効にするには、enableImageStreaming フィールドを true に設定し、ジョブの VM のロケーションが含まれる Artifact Registry のロケーションに保管されているイメージに imageUri フィールドを設定します。
"container": {
...
"enableImageStreaming": true
}
たとえば、イメージ ストリーミングを使用するジョブには、次のような JSON 構成ファイルが作成されます。
{
"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"
}
}
次の値を置き換えます。
LOCATION: イメージが保存されているリポジトリのリージョンまたはマルチリージョンのロケーション(us-east1やusなど)です。コンテナのロケーションは、Batch ジョブの VM のロケーションと同じである必要があります。PROJECT-ID: コンテナ イメージを含むプロジェクト。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。REPOSITORY: イメージが保存されるリポジトリの名前。IMAGE: コンテナ イメージの名前です。TAG: イメージに適用されるタグ。
次のステップ
- ジョブの作成または実行で問題が発生した場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。