Kubernetes 1.15: SIG Scheduling の変更内容


はじめに

ここでは, Kubernetes 1.15 の CHANGELOG から SIG Scheduling に関係のあるものを抜粋しています.

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md


主な変更点 (1.15 What's New)


Additional Notable Feature Updates


  • スケジュールプラグインのための Scheduling Framework が alpha バージョンとなりました.

:pencil: スケジュールプラグインとは既存の Kubernetes Scheduler を拡張するための仕組みで, プラグインはコアの実装とともにコンパイルする必要があるようです. カスタマイズされたスケジューラの不具合は特定の環境でしか発生しないものなどが多いため, 保守性の観点からコア実装と拡張機能を分けたいというのが背景にあるようです. また, Kubernetes Scheduler にはもともと webhook による拡張を行うことができましたが, 拡張性やパフォーマンスへの制限があるため, 新しいプラグインの仕組みが検討されています. (参照: KEP)


注目機能 (Notable Features)


Stable

なし


Beta

なし


Alpha


  • PriorityClass に preempt するかどうかを指定するフィールドが追加されます. これが設定されている場合, Pod は他の優先度の低い Pod よりも先に並べられますが, 実行中の Pod を preempt しません. (#74614, @denkensk)

:pencil: バッチ処理などで, 優先度は指定したいものの途中までの計算結果は無駄にはしたくないというようなユースケースへの対応です.


その他の変更 (Other notable changes)


  • QoS が BestEffort の Pod で同じキーと効果で値の異なる Toleration はマージされるようになります. (#75985, @ravisantoshgudimetla)

:pencil: QoS が BestEffort の Pod の場合だけ Key:abc, Effect: NoSchedule, Value: Test1, Key:abc, Effect: NoSchedule, Value: Test2 というような二つの Toleration を指定した場合に, 二つの Toleration が作られてしまっていた不具合への対応です. QoS が BestEffort 以外の場合には Value: Test2 の Toleration が一つとなっていたので同じ挙動に修正されます.


  • required な場合と preferred な場合の両方の PodAffinity でパフォーマンスが二倍に向上します. (#76243, @Huang-Wei)

:pencil: Lock/Unlock を行う代わりに sync/atomic パッケージの AddInt64 関数 を利用するようにしたようです.


  • スケジューラの競合問題を修正し, 優先度の高い Pod が NominatedNodeName を持つ場合には優先度の低い Pod が確実に unschedulable となるようにしました. (#77990, @Huang-Wei)