LoginSignup
1
1

More than 1 year has passed since last update.

Kubernetes スケジューラの挙動メモ

Last updated at Posted at 2021-10-21

調べたいことがあり、スケジューラ実装のソースを読んだ際のメモです。
かなりはしょってますので、読みづらいかもしれません。

調べたいこと

  • Priority Classを使った際にスタベーションは起きるのか
  • バックフィルはあるのか

読む前に知識をつける

コードリーディング準備

  • vscode WSLを利用
  • GitHubからクローン(コミットログ不要なので--depth 1をつける)
  • goの拡張を入れる
    • 右クリックで参照や定義ジャンプができるようになる

概要

  • pkg/scheduler/internal/scheduling_queue.go

    • 3つのQueueを内部にもつ
      • activeQ: アサインしようとしているPodをためる。実態はinternal/heap/heap.go
      • unschedulableQ: アサインを試みて無理と判断したPodをためる
      • backOffQ: unschedulableQから移したPodをためる。このQの中でbackOff完了したPodをactiveQに戻す。実態はinternal/heap/heap.go
  • internal/heap/heap.go

    • container/heapパッケージのラッパー
    • internal/heap_test/heap.go を見れば、動的に優先度を変更できることがわかる

結論

  • 動的に優先度変更がキューに反映されるので、優先度の付け方次第でスタベーションは起きえる
    • あくまでキューがそうなってるだけなので、ProrityClassの変更がキューに渡らない可能性もある。
      • 要追加調査(実機検証したい)
  • アサイン不能なものはいったんactiveQから出て別のキューに移動するので、キュー先頭がアサイン不能だった場合、それより優先度の低いものもアサインはされる
    • バックフィルに近い挙動である(厳密には違うが)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1