Workload API
Kubernetes v1.35 [alpha](disabled by default)Workload APIリソースを使用すると、複数のPodで構成されるアプリケーションについて、スケジューリング要件とPodのグループ構成を記述できます。 ワークロードコントローラーはワークロードのランタイム動作を提供しますが、Workload APIはJobなどの「真の」ワークロードに対して、スケジューリング制約を提供することを目的としています。
Workloadとは
Workload APIリソースは、scheduling.k8s.io/v1alpha1 APIグループの一部です(このAPIを利用するには、クラスターで、そのAPIグループとGenericWorkloadフィーチャーゲートの両方を有効にする必要があります)。
このリソースは、複数のPodで構成されるアプリケーションのスケジューリング要件を、構造化された機械可読な形式で定義します。
Jobのようなユーザー向けのワークロードは何を実行するかを定義します。
一方で、Workloadリソースは、Podのグループをどのようにスケジュールし、ライフサイクル全体を通じてその配置をどう管理するかを決定します。
APIの構造
Workloadを使用すると、Podのグループを定義し、それらにスケジューリングポリシーを適用できます。 これは、Podグループのリストとコントローラーへの参照という2つのセクションで構成されます。
Podグループ
podGroupsリストは、ワークロードの個別のコンポーネントを定義します。
たとえば、機械学習ジョブにはdriverグループとworkerグループがある場合があります。
podGroupsの各エントリには以下が必要です:
- PodのWorkload参照で使用できる一意の
name - スケジューリングポリシー(
basicまたはgang)
apiVersion: scheduling.k8s.io/v1alpha1
kind: Workload
metadata:
name: training-job-workload
namespace: some-ns
spec:
controllerRef:
apiGroup: batch
kind: Job
name: training-job
podGroups:
- name: workers
policy:
gang:
# gangは4つのPodが同時に実行できる場合にのみスケジュール可能
minCount: 4
ワークロード管理オブジェクトの参照
controllerRefフィールドは、WorkloadをJobやカスタムCRDなど、アプリケーションを定義する上位のオブジェクトに紐づけます。
これは可観測性とツールの利用に役立ちます。
このデータは、Workloadのスケジューリングや管理には使用されません。
次の項目
- PodでWorkloadを参照する方法を確認する。
- Podグループポリシーについて学ぶ。
- gangスケジューリングアルゴリズムについて読む。