Batch on GKE リファレンスと API

Batch on GKE リソース

Batch には次の新しい Kubernetes リソースが導入されています。

BatchJob
ジョブには、実行する作業とその実行に必要なコンピューティング リソース、データなどが記述されます。
BatchQueue
キューはバッチの中心的な構成要素です。キューでは以下を指定します。
    BatchJobConstraint
    制約は、特定のキューで許容されるジョブとポリシーを指定します。たとえば、GPU なしで 4 時間未満のジョブが必要になる場合があります。単一の BatchJobConstraint リソースを複数のキューに割り当てることができます。
    BatchBudget
    予算は、1 つのキューでいくつのリソースを使用できるか、1 つのキューが一度に、あるいは数日間の間でどれくらいリソースを消費できるかを定義します。各作業、プロジェクト、チームごとに予算を割り当てるというのが、よくある使用法です。複数のキューで同じ予算が使用されることがあります。
    BatchPriority
    管理者は、システム内で複数の異なる優先レベルを定義できます。1 つのキューには 1 つの優先度を設定できますが、同じ BatchPriority リソースは複数のキューに割り当てることができます。

BatchJobs

BatchJob は、単一のユーザージョブを定義します。実行する必要がある作業とそのジョブのコンピューティング リソースの要件、このジョブに関連付けられたデータ ストレージを指定します。キューは、リソースと依存関係に基づいてジョブを整理し、優先順位を付けます。

スケジューリングと予算管理のために BatchJob を BatchQueue に送信する必要があります。リソース要件により、バッチは BatchJob の計算ニーズを満たす VM を作成して割り当てることができます。BatchJob が実行を開始すると、ジョブ仕様のコンテナ イメージが pull され、完了するまで実行されます。

単一タスクの BatchJob

BatchJob の仕様には、batchQueueName に加えて taskGroup が含まれています。簡単な BatchJob では、その taskGroup 内に 1 つのタスクしかありません。

次の default_job.yaml は、単一タスクのジョブの例を示しています。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchJob
metadata:
  # generateName allows the system to generate a random name with a set prefix every time this BatchJob is submitted.
  generateName: pi-
  namespace: default
spec:
  batchQueueName: default
  taskGroups:
  - name: main
    maxWallTime: 5m
    template:
      spec:
        containers:
        - name: pi
          # This image has been made public so it can be pulled from any project.
          image: gcr.io/kbatch-images/generate-pi/generate-pi:latest
          resources:
            requests:
              cpu: 1.0
              memory: 2Gi
            limits:
              cpu: 1.0
              memory: 2Gi
          imagePullPolicy: IfNotPresent
        restartPolicy: Never

配列ジョブ: 複数のタスクを含む BatchJob

ArrayJob はバッチ v0.8.0 からサポートされています。配列ジョブは、taskGroup に複数のタスクがある BatchJob です。各タスクは同じタスク仕様を共有しているため、各タスクは同じリソース要件と maxWallTime などのジョブ プロパティを持つ同じコンテナ イメージを効率的に実行します。taskGroup のタスク数は、indexSpec の taskCount フィールドで指定します。

ArrayJob の各タスクには KBATCH_ARRAY_INDEX 環境変数があります。この変数の値は、このタスクの配列インデックスです。配列インデックスの範囲は 0 から始まり、taskCount-1 で終わります。この環境変数を使用して、タスクごとに異なる入力やパラメータなどを選択できます。

次の array_job.yaml は、ArrayJob の例を示しています。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchJob
metadata:
  generateName: array-image-
  namespace: default
spec:
  batchQueueName: default
  taskGroups:
  - name: main
    maxWallTime: 10m
    indexSpec:
      taskCount: 5
    template:
      spec:
        containers:
          - name: greyimage
            # This image has been made public so it can be pulled from any project.
            image: gcr.io/kbatch-images/greyimage/greyimage:latest
            command: ["./greyimage"]
            args: ["-in=/mnt/pv/array-image-data/input_$(KBATCH_ARRAY_INDEX).png", "-out=/mnt/pv/array-image-data/output_$(KBATCH_ARRAY_INDEX).png"]
            volumeMounts:
              - mountPath: /mnt/pv
                name: mypvc
            resources:
              limits:
                cpu: 1.0
                memory: 2Gi
              requests:
                cpu: 1.0
                memory: 2Gi
            imagePullPolicy: IfNotPresent
        restartPolicy: Never
        volumes:
          - name: mypvc
            persistentVolumeClaim:
              claimName: pvc
              readOnly: false

BatchJob の送信後、Batch がジョブを処理し、ジョブの最新ステータスをジョブのステータスの Phase フィールドに記録します。ジョブでのフェーズは次のとおりです。

フェーズ 説明
キューに格納済み ジョブはシステムに登録され、スケジュール設定待ち状態になります。
スケジュール設定済み ジョブはジョブ スケジューラによってスケジュールされ、ノードに割り当てられるのを待機しています。
準備完了 ジョブがノードに割り当てられ、ノードの準備が完了するのを待機しています。
実行中 ジョブが実行中です。
失敗 ジョブは失敗しました。
完了 ジョブは正常に完了しました。

ジョブが入出力データ用に一部のファイル ストレージにアクセスする必要がある場合、バッチは Kubernetes PersistentVolumeClaim(PVC)ベースのボリュームをジョブコンテナにマウントすることをサポートします。

以下の data_job.yaml はその例です。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchJob
metadata:
  name: data-job
  namespace: default
spec:
  batchQueueName:  default
  taskGroups:
    maxWallTime:  10m
    name: default
    retryLimit:    0
    template:
      spec:
        containers:
          image:  ubuntu:latest
          name:   data-util
          volumeMounts:
          - mountPath:  /jobdata
            name:        data-volume
        restartPolicy:  Never
        volumes:
          name:  data-volume
          persistentVolumeClaim:
            claimName:  pvc
をご覧ください。

BatchQueues

Batch で新しいリソース BatchQueue が導入されました。Batch で、(通常は同じチームの)関連性の高い BatchJob をグルーピング、管理、分類する際、BatchQueue が役立ちます。

Batch では、クラスタ内に複数の BatchQueue を作成できます。BatchQueues は、組織の論理的な取り組みを予算、優先度、ポリシーで整理、管理するためのオブジェクトです。同じ予算を使用するジョブ、同じポリシーを持つジョブは、同じ BatchQueue のセットに配置する必要があります。ユーザーに、別の BatchQueue への送信を許可できます。

以下の YAML は、BatchBudget default を使用して BatchQueue を定義します。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchQueue
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: default
  namespace: default
spec:
  batchPriorityName: high
  batchBudgetName: default
  constraintNames: ["default"]

BatchPriority

システム管理者は、複数の優先度オブジェクトを作成できます。各優先度オブジェクトには、整数で示される優先度があります。優先度オブジェクトは、各 BatchQueue で指定できます。この BatchQueue から作成されたジョブと Pod は、この優先度を継承します。

次の .yaml ファイルが、BatchPriority の例を示しています。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchPriority
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: high
spec:
  value: 100
  description: High Priority

優先順位は名前空間ではないため、任意の名前空間の BatchQueue に適用できます。優先度を作成した後は、BatchQueue の batchPriorityName フィールドを優先度の名前で更新して、BatchQueue に接続します。batchPriorityName フィールドはいつでも更新できます。

ジョブが実行されると、スケジューラはキューの優先度に基づいて優先順位を決定します。通常、優先度 88 の BatchQueue からのジョブは、優先度 3 の BatchQueue の前に実行されます。

BatchPriority を削除できるのは、BatchPriorityName で BatchQueue が BatchPriority を参照していない場合のみです。

BatchJobConstraints

BatchJobConstraints は、BatchQueue に接続できる制約のグループです。BatchJobConstraints は名前空間ではなく、任意の名前空間内の BatchQueues に適用できます。BatchJob が BatchQueue に送信されると、BatchJob は制約に対して検証されます。BatchJob は、制約を満たす場合にのみキューに入れることができます。

たとえば、WallTime の制約が 30 分に設定されている場合、30 分未満のジョブのみがキューに追加されます。

管理者は、特定の BatchQueue には特定の種類のジョブのみを必要とする場合があります。たとえば、開発中の迅速なイテレーションを目的とした BatchQueue の優先度は高くなりますが、ジョブの最大実時間は短く、CPU を多く使用しないようにする必要があります。

BatchQueue が BatchJobConstraint を指定する場合、BatchQueue 内のジョブは、値が指定されていない場合、デフォルトで適用されます。ジョブが、これらの要件のいずれかに互換性のない値を指定した場合、送信時に失敗します。

次の .yaml ファイルは、BatchJobConstraint の例を示しています。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchJobConstraint
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: default
spec:
  # The system supports the following constraints:
  # Cpu, Memory, WallTime, Gpu, GpuModel, RetryLimit
  # Adding a BatchJobConstraint to a BatchQueue means that the BatchQueue will only accept jobs that satisfy the
  # listed constraints.
  constraints:
    - name: WallTime
      operator: LessThan
      values: ["24h"]

次のテーブルは、サポートされているフィールド、およびそれぞれの値で使用可能な演算子を示しています。

フィールド名 演算子
WallTime LessThan、GreaterThan、Equal、In、NotIn、Exists WallTime : 30m、1h
Memory LessThan、GreaterThan、Equal、In、NotIn、Exists Memory: 128974848、129e6、129M、123Mi
Cpu LessThan、GreaterThan、Equal、In、NotIn、Exists Cpu: 0.1、100m、1
Gpu LessThan、GreaterThan、Equal、In、NotIn、Exists Gpu: 0、1、2
GpuModel Equal、In、NotIn、Exists GpuModel: nvidia-tesla-p4、nvidia-tesla-k80、nvidia-tesla-v100、nvidia-tesla-p100、nvidia-tesla-t4
RetryLimit LessThan、GreaterThan、Equal、In、NotIn、Exists RetryLimit: 0、1、2

次のテーブルは、演算子と各演算子の値に関する要件を示しています。

演算子 値の仕様
LessThan、GreaterThan、Equal 値が 1 つだけ必要
Memory 値が 1 つだけ必要
In、NotIn 少なくとも 1 つの値が必要
Exists ゼロ値が必要

BatchBudgets

BatchQueue には、任意の batchBudgetName を指定できます。これにより、BatchQueue が特定のウィンドウで使用できるリソース数を制限できます。予算は、CPU、GPU、メモリの過度な使用を防ぐのに役立ちます。BatchBudgets では、使用可能なすべてのリソースを消費する高優先度の BatchQueue の影響を制限することもできます。

BatchBudgets では、ネットワーク トラフィック、オブジェクト ストレージ、サードパーティ API など、クラスタ外のリソースや API は考慮されません。また、実際の請求書ではありません。予算を使用するには、1 時間あたりの各リソースのコストモデル(料金表)を定義します。BatchQueues からのジョブがこれらのリソースを使用するため、予算は合計額から引き落とされます。

次の default_budget.yaml は、予算の例を示しています。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchBudget
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: default
spec:
  batchCostModelName: "default"
  # Two durations are currently supported: 24h and 720h (30d). These may be combined, by specifying
  # two budget windows, to enforce both a daily and monthly limit.
  budgetWindows:
    - duration: "24h"
      amount: 100

この例では、1 日あたり 100 に BatchQueue を制限しています。各リソースの費用は、以下の costModel に記載されています。予算を超過すると、予算枠が更新されるまで新規ジョブとキューに登録されたジョブは実行できなくなります。また、予算ウィンドウの量を増やして、ウィンドウが更新される前にキューに入れられたジョブを実行できるようにすることもできます。

BatchBudgets では、予約モデルを使用します。たとえば、1 時間の CPU のコストが 1 で、ジョブの制限時間が 10 時間の場合、スケジューラはこの期間の予算が少なくとも 10 残っている場合にのみ、ジョブの実行を許可します。ジョブが準備完了とマークされると、10 の予算が予約されます。ジョブが 5 しか実行されずに完了した場合、5 の予算が予算に払い戻されます。予約モデルを使用すると、ジョブが予算の途中計算を使い果たすことがなくなります。

次の default_costmodel.yaml は、costModel の例を示しています。

apiVersion: kbatch.k8s.io/v1beta1
kind: BatchCostModel
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: default
spec:
  resources:
    # These costs are hourly and in USD. For example, based on the numbers below, running using 1 CPU
    # 1 GB of RAM, and 1 Tesla T4 GPU for 2 hours would cost 2 * ($0.031611 + $0.004237 + $0.95)
    # The values are taken from https://cloud.google.com/compute/pricing for
    # region us-west1. The values are accurate as of April 2019. Actual pricing depends on various factors,
    # such as long-term contracts, use of standard machine types, the region, etc.
    cpu: 0.031611  # This is the on-demand price for a single vCPU
    memory: 0.004237  # This is the on-demand price for 1GB of memory
    nvidia.com/gpu: 0.95  # This is the cost for use of the Tesla T4 GPU. Currently the system does not support breaking out prices for specific GPU types, so an average price for the intended GPUs should be used here.

リソースの削除

リソースタイプが、他のリソースタイプに依存することがあります。たとえば、BatchPriority は BatchQueue で使用されます。Batch は、依存されているリソースの削除を防ぐために最善を尽くします。第 1 の防御線は、使用中の依存関係の削除を拒否する承認コントローラです。

Kubernetes の性質上、依存関係を常に検出することはできません。特に、依存関係の削除と依存関係の新規使用との間に競合状態が発生することがあります。Batch には、このようなケースを処理するための 2 つ目のメカニズムがあります。この場合に、リソースが使用されなくなったことが検出されると依存関係が削除されます。

ユーザーとアクセスの管理

バッチは、2 種類のユーザーを区別します。クラスタを設定、管理、および管理する管理者と、BatchJobs をシステムに送信するプラクティショナーです。

バッチは、最低限の権限の原則に従います。つまり、ジョブを実行するプラクティショナーと VM に、必要な最小限のスコープとアクセスを付与します。管理者はユーザーにさらにアクセス権を付与できますが、明確に定義されたセキュリティ ポリシーに従う必要があります。

Batch on GKE のユーザー管理は、各ユーザーの Kubernetes RBAC と CRD BatchUserContext で構成されます。Batch では、これらの設定を 1 ステップで設定できるスクリプトが利用可能です。詳細については、Batch on GKE の管理をご覧ください。

デフォルトでは、プラクティショナーには Batch on GKE へのアクセス権はありません。Batch では、次のユースケースをサポートするユーザー管理ツールが提供されています。

  • ユーザーは、バッチジョブを送信してその結果にアクセスします。誤って他のユーザーのジョブとやり取りしてしまうことはありません。
  • Batch on GKE のユーザーは、PersistentVolumeClaim レベルと追加の保護レベルとして Unix ファイル アクセス制御レベルでストレージ データ アクセスを分離できます。
  • システム管理者は、ユーザーの Kubernetes セキュリティ ポリシーと unix ファイル アクセス ポリシーを設定できます。Batch では、ユーザーがジョブを送信したときにこれらのポリシーを接続して検証します。

Batch on GKE ユーザーのロールベースのアクセス制御

次のテーブルで、Batch on GKE ユーザーの RBAC のセットについて説明します。

リソース スコープ 動詞
BatchJobs 名前空間にあるすべて Get、List、Watch、Create
Pod 名前空間にあるすべて List
BatchQueue 名前空間にあるすべてのバッチキュー Get、List
BatchPriority クラスタ内のすべて Get、List
BatchBudgets/BatchCostModel クラスタ内のすべて Get、List
persistentVolumeClaim 名前空間でこのユーザーが使用できるもののみ Get
Secret 名前空間でこのユーザーが使用できるもののみ Get

ジョブが送信されたら、作成者はジョブを終了できます。クラスタ管理者には BatchJob を削除する権限があります。BatchJob が削除されると、ジョブに関連付けられた動的に付与された RBAC が削除されます。

プリエンプティブル VM のサポート

バッチでは、BatchJob レベルでプリエンプティブル VM の使用がサポートされます。次のバッチでは、BatchJob レベルでのプリエンプティブル VM の使用がサポートされています。BatchJob の実行時にプリエンプティブル VM を要求する場合は、BatchJob の仕様セクションで次の batchNodeSelector を指定します。

  batchNodeSelector:
    usePreemptibleVM:
      operator: Equals
      values:
      - Require

ksub を使用する場合は、BatchJob を定義するシェル スクリプトに行 #KB PreemptibleVM Require を追加して、プリエンプティブル VM を要求できます。

プリエンプティブル VM を使用する場合は、いくつかの制限があります。特に、プリエンプティブル VM はいつでも終了できます。バッチは、BatchJob の各 taskGroupRetryLimit フィールドを使用して、VM の終了などの理由で失敗する BatchJob を再試行します。

ベータ版の制限

  • ベータリリースでは、シングルノード(VM)のジョブのみがサポートされています。マルチノード、ギャング スケジュール、MPI ジョブは現在サポートされていません。

  • VM 上に Pod を配置する場合、GKE は VM 上のエージェントのオーバーヘッドを考慮します。たとえば、4 つの vCPU の VM は、作業に使用できる vCPU の数が少ない(通常は 3.8 など)と見なされるため、その VM に 4 つの vCPU を必要とするジョブは配置されません。

  • コストモデルは 1 つの GPU タイプのみをサポートします。

  • ユーザー名 [NAME]@[PROJECT_NAME].iam.gserviceaccount.com には、63 文字以内の制限があります。つまり、[NAME][PROJECT_NAME] のそれぞれに 37 文字以内の制限があります。

  • PodSecurityPolicy の runAsGroup フィールドは GKE ではサポートされていません。

  • Batch は PersistentVolumeClaim を通じてのみ NFS ボリュームをサポートします。

  • 同時に送信できるジョブの最大数は 10,000 です。

リファレンス

BatchPriority v1beta1 kbatch.k8s.io

BatchPriority は、batchpriorities API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchPrioritySpec

status

BatchPriorityStatus

BatchPrioritySpec

フィールド
Value

int32

Description

String

BatchJobConstraint v1beta1 kbatch.k8s.io

BatchJobConstraint は、batchjobconstraints API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchJobConstraintSpec

status

BatchJobConstraintStatus

BatchCostModel v1beta1 kbatch.k8s.io

BatchCostModel は、batchcostmodels API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchCostModelSpec

status

BatchCostModelStatus

BatchCostModelSpec v1beta1 kbatch.k8s.io

BatchCostModelSpec では、リソースのコストを定義できます。

フィールド
resources

ResourceCostList

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

ResourceName v1beta1 kbatch.k8s.io

ResourceName はリソースのタイプです。

フィールド
ResourceCPU

CPU リソースを表します。

ResourceMemory

Memory リソースを表します。

ResourceGPU

GPU リソースを表します。

BatchBudget v1beta1 kbatch.k8s.io

BatchBudget は、batchbudgets API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchBudgetSpec

status

BatchBudgetStatus

BatchBudget の観測状態を定義します。

BatchBudgetSpec v1beta1 kbatch.k8s.io

BatchBudgetSpec は、BatchBudget の目的の状態を定義します。

フィールド
batchCostModelName

String

この予算で使用される BatchCostModel の名前です。

budgetStartTime

Kubernetes meta/v1.Time

予算内の最初のウィンドウの開始時刻。設定されていない場合、予算の作成時間として入力されます。

budgetWindows

[]BudgetWindow

それぞれのウィンドウの予算の上限を定義するウィンドウの配列です。BudgetWindows [i].Duration は、BudgetWindows 内で一意である必要があります。

BatchBudgetStatus v1beta1 kbatch.k8s.io

BatchBudgetStatus は、BatchBudget の観測状態を定義します。

フィールド
LastUpdated

String

最後に更新された時刻です。

WindowStatusList

[]BudgetWindowStatus

(省略可)

WindowStatusList には、詳細ステータスを伝える各ウィンドウのエントリが 1 つ含まれます。WindowStatusList [i].Start <= time.Now() を保持する必要があります。

BudgetWindow v1beta1 kbatch.k8s.io

BudgetWindow は、そのウィンドウ内の予算額の上限を定義します。

フィールド
duration

Kubernetes meta/v1.Duration

Duration はウィンドウのサイズを示します。現在のところ、日数のみがサポートされています。そのため、日数の「d」のみが接尾辞として有効です。今後、時間、週などの単位も追加される予定です。

amount

[]BudgetWindowStatus

(省略可)

このウィンドウ内の予算の上限額です。

BudgetWindowStatus v1beta1 kbatch.k8s.io

BudgetWindowStatus には、現在のウィンドウと過去のウィンドウの両方を含むウィンドウの予算消費情報が含まれます。

フィールド
duration

Kubernetes meta/v1.Duration

Duration はウィンドウのサイズを示します。現在のところ、日数のみがサポートされています。そのため、日数の「d」のみが接尾辞として有効です。今後、時間、週などの単位も追加される予定です。

startTime

Kubernetes meta/v1.Time

現在のウィンドウの開始時刻です。ウィンドウが終了すると、履歴に追加され、新しいウィンドウが作成されます。

amount

float64

この期間内に使用された予算額です。

windowHistory

[]BudgetWindowHistoryRecord

この期間の完了ウィンドウごとに、このウィンドウで使用された予算の量が追跡されます。アルファ版では、1 日のウィンドウについては 90 日間の履歴を保持し、30 日間のウィンドウについては 3 つの履歴を記録します。

BudgetWindowHistoryRecord v1beta1 kbatch.k8s.io

BudgetWindowHistoryRecord は、そのウィンドウ内で使用される予算の量をトラッキングします。

フィールド
windowStartTime

Kubernetes meta/v1.Time

ウィンドウの開始時刻です。

windowEndTime

Kubernetes meta/v1.Time

ウィンドウの終了時刻です。

amount

float64

この期間内に使用された予算額です。

BatchQueue v1beta1 kbatch.k8s.io

BatchQueue は、batchqueues API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchQueueSpec

status

BatchQueueStatus

BatchQueueSpec v1beta1 kbatch.k8s.io

BatchQueueSpec は、BatchQueue の目的の状態を定義します。

フィールド
BatchPriorityName

String

この BatchQueue に関連付けられた BatchPriority リソースの名前です。この BatchQueue のジョブは、ここで設定された BatchPriority に基づいてスケジューリングが優先されます。

PauseAdmission

bool

(省略可)

true の場合、BatchQueue は新しいジョブを受け入れません。これはジョブのスケジュール設定には影響しません。

PauseScheduling

bool

(省略可)

true の場合、BatchQueue はジョブをスケジュールしません。これはジョブの承認には影響しません。

BatchBudgetName

String

この BatchQueue に関連付けられた BatchBudget リソースの名前です。

ConstraintNames

[]string

キューに適用される BatchJobConstraints の名前を保持します。

BatchJob v1beta1 kbatch.k8s.io

BatchJob は、batchjobs API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchJobSpec

BatchJobSpec は、BatchJob の目的の状態を定義します。

status

BatchJobStatus

BatchJobStatus は、BatchJob の観測状態を定義します。

BatchJob v1beta1 kbatch.k8s.io

BatchJob は、batchjobs API のスキーマです。

フィールド
metadata

Kubernetes meta/v1.ObjectMeta

メタデータ フィールドのフィールドについては、Kubernetes API のドキュメントを参照してください。

spec

BatchJobSpec

status

BatchJobStatus

ジョブ ステータスです。このフィールドは pointer、optional、および omitempty./p である必要があります。

BatchJobSpec v1beta1 kbatch.k8s.io

フィールド
TaskGroups

[]BatchTaskGroupSpec

タスクグループの仕様です。

BatchQueueName

string

この BatchJob を実行する BatchQueue の名前です。

Dependencies

[]BatchJobDependency

(省略可)

Dependency は複数の BatchJob 依存関係を定義します。各依存関係間の論理は「OR」演算です。例: Dependencies [0] Dependencies [1] Dependency [0] と Dependency [1] の間のロジックは次のとおりです。Dependencies [0] || Dependency [1] Dependency は 1 種類のみサポートされています。

batchQueueName

string

この BatchJob を実行する BatchQueue の名前です。

UserCommand

string

省略可

BatchJob の UserCommand です。デフォルトは空の文字列です。このフィールドが空の場合、エンドユーザーからのユーザー コマンドはありません。BatchJob の実行中に「Terminate」に設定されている場合は、BatchJob を終了します。

BatchNodeSelector

BatchNodeSelector

省略可

BatchJob の BatchNodeSelector です。デフォルトは空の値です。このフィールドは、BatchJob が実行されるノードの特別な特性を指定するために使用されます。現在は、BatchJob がプリエンプティブル マシンまたは GPU を搭載したマシンで実行される必要があることを示すために使用できます。

taskGroupSpec v1beta1 kbatch.k8s.io

フィールド
Name

string

このタスクグループの名前。

IndexSpec

BatchIndexSpec

配列ジョブのタスク数を指定します。taskCount の最大数は 1,000 です。

Template

Kubernetes pod template spec

このタスクグループの名前。

MaxWallTime

string

タスクごとの 1 回の実行での最大実行時間。

RetryLimit

int32

(省略可)

RetryLimit はタスクごとの再試行制限を定義します。タスク実行回数は RetryLimit + 1 になります。指定しない場合、この値はデフォルトの 0 になります。

BatchIndexSpec v1beta1 kbatch.k8s.io

フィールド
TaskCount

string

タスクの数。

BatchJobStatus v1beta1 kbatch.k8s.io

BatchJobStatus は、BatchJob の観測状態を定義します。

フィールド
Phase

BatchJobPhase

(省略可)

このジョブの現在のフェーズです。

BatchPriority

BatchPriority

(省略可)

この BatchJob に関連付けられた BatchPriority リソースのコピーです。この BatchJob に関連付けられた BatchQueue で宣言された batchPriorityName に基づきます。

BudgetConsumed

float64

(省略可)

すべてのタスクを含むジョブの消費された予算の合計です。

Conditions

[]BatchJobCondition

(省略可)

バッチジョブの現在の状態に関する最新の観測値です。

SubmittedBy

string

(省略可)

ジョブを送信したユーザーです。

GroupStatus

string

(省略可)

タスクグループごとのステータスです。

次のステップ