スケジューラーフレームワークにPodイベントサブタイプを追加

概要

Kubernetesスケジューラーフレームワークに3つの新しいPodクラスターイベントサブタイプ(AssignedPodUnscheduledPodTargetPod)が追加されました。スケジューラープラグインが必要なイベントだけを選択的に受け取れるようになり、パフォーマンスが向上します。

背景

Kubernetesスケジューラーは、新しいPodをどのノードに配置するかを決定します。スケジューラーはプラグインアーキテクチャを採用しており、様々なスケジューリングポリシーをプラグインとして実装できます。

スケジューリングに失敗したPod(スケジュール不可能なPod)は、クラスターの状態が変わった時に再試行されます。この「再試行すべきタイミング」をプラグインが判断するために、クラスターイベントを監視する仕組みがあります。

詳細

以前の問題: プラグインが Pod イベント全体に登録すると、対象外のPodイベントでも不要なキューイングヒント関数が実行されていました。例えば、ギャングスケジューリングプラグイン(複数のPodを一緒にスケジュールするプラグイン)は、ギャングに関係のないPodのイベントでも実行されていました。

改善内容: 3つのサブタイプが追加されました:

  • AssignedPod: ノードに割り当て済みのPodのイベント
  • UnscheduledPod: まだスケジュールされていないPodのイベント
  • TargetPod: 特定のターゲットPodに関するイベント

プラグインは自分が必要とするサブタイプのみに登録することで、不要なCPU処理を削減できます。

参考リンク