Gangスケジューリング
Kubernetes v1.35 [alpha](disabled by default)Gangスケジューリングは、Podのグループを「全か無か」の原則でスケジュールすることを保証します。 クラスターがグループ全体(または、定義された最小数のPod)を収容できない場合、どのPodもノードにバインドされません。
この機能はWorkload APIに依存しています。
クラスターでGenericWorkloadフィーチャーゲートとscheduling.k8s.io/v1alpha1 APIグループが有効になっていることを確認してください。
動作の仕組み
GangSchedulingプラグインが有効な場合、スケジューラーはWorkload内のgang Podグループポリシーに属するPodのライフサイクルを変更します。
このプロセスは、各Podグループとそのレプリカキーごとに独立して実行されます:
スケジューラーは、以下の条件をすべて満たすまで、Podを
PreEnqueueフェーズで保持します:- 参照先のWorkloadオブジェクトが作成されている
- 参照先のPodグループがWorkload内に存在する
- 特定のグループに対して作成されたPodの数が、少なくとも
minCount以上である
これらの条件がすべて満たされるまで、Podはアクティブなスケジューリングキューに入りません。
必要数が満たされると、スケジューラーはグループ内のすべてのPodの配置先を見つけようとします。 この処理中、割り当てられたすべてのPodは
WaitOnPermitゲートで待機します。 なお、この機能のAlphaフェーズでは、配置先の検索は単一サイクル方式ではなく、Pod単位のスケジューリングに基づいています。スケジューラーが少なくとも
minCount個のPodに対して有効な配置先を見つけた場合、それらすべてを割り当てられたノードにバインドすることを許可します。 5分間の固定タイムアウト内にグループ全体の配置先を見つけられない場合、どのPodもスケジュールされません。 代わりに、クラスターのリソースが空くのを待つため、スケジュール不可能キューに移動され、その間に他のワークロードをスケジュールできるようにします。
次の項目
- Workload APIについて学ぶ。
- PodでWorkloadを参照する方法を確認する。