Upgrade to Pro — share decks privately, control downloads, hide ads and more …

君だけの最強 Scheduler を作ろう! #dockertokyo / Docker Me...

y_taka_23
February 26, 2019

君だけの最強 Scheduler を作ろう! #dockertokyo / Docker Meetup Tokyo 28th

Docker Meetup Tokyo #28 で使用したスライドです。

様々なアプリケーションのプラットフォームとして Kubernetes を活用するに当たって、目的に応じて Scheduler の挙動をカスタマイズする方法について解説しています。

イベント概要:https://dockerjp.connpass.com/event/120221/
ブログ記事:https://ccvanishing.hateblo.jp/entry/2019/02/27/032421

y_taka_23

February 26, 2019
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

  1. 高度な Scheduling への需要 • Node 管理の自動化 ◦ → クラスタの動的な状態の反映 •

    ステートフルなアプリのデプロイ ◦ → 複数 Pod が連携した Scheduling • ジョブ実行基盤としての利用 ◦ → 実行順序と割込み管理の複雑化
  2. Scheduling Policy • kube-scheduler の --config に指定 ◦ KubeSchedulerConfiguration リソース

    ◦ Pod ごとの設定には複数の Scheduler が必要 • 予め用意された項目を組み合わせる ◦ Node のフィルタリング条件 (predicate) ◦ Node の順位付け関数と重さ (priority)
  3. Scheduler Extender • JSON Webhook による処理の追加 • 拡張できるポイントは 4 つ

    ◦ Filter - Node の候補を絞る ◦ Prioritize - Node の順位付け関数を追加 ◦ Preempt - 追い出される Pod の候補を絞る ◦ Bind - Pod と Node の紐づけを委譲
  4. Scheduler Extender の不足点 • 記述できる処理が限定的 ◦ エラー時の中断や分岐ができない • 実行時のオーバーヘッド ◦

    外部サーバとの JSON のやり取りは遅い • 情報の使いまわしが効かない ◦ 前の拡張点の結果で分岐させるなど
  5. Scheduling Framework の目的 • シンプルなコア機能を抽出 ◦ 肥大化しすぎた現在の実装を整理 • 柔軟に拡張できるプラガブルな設計 ◦

    ソースコード中に多数の拡張点を提供 • 大域的な情報を利用可能 ◦ プラグインの処理結果やキャッシュを共有
  6. まとめ • Scheduling に対する要求の多様化 ◦ ポリシ設定だけでなく拡張点の必要性 • Scheduler Extender の利用と限界

    ◦ JSON Webhook によるプログラマブル拡張 • カスタム Scheduler の開発 ◦ Scheduler Framework によるプラグイン化