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

Kubernetesはschedulerのパフォーマンスをどのように計測しているか

sanposhiho
July 21, 2021
510

 Kubernetesはschedulerのパフォーマンスをどのように計測しているか

Kubernetes Meetup Tokyo #43 LT
https://k8sjp.connpass.com/event/217089/

sanposhiho

July 21, 2021
Tweet

More Decks by sanposhiho

Transcript

  1. Kubernetesはschedulerのパフォーマ ンスをどのように計測しているか @sanposhiho

  2. お前 is 誰 名前: Kensei Nakada / sanposhiho 所属: 京都大学

    Google Summer of Code @Kubernetes @sanposhiho @sanpo_shiho
  3. web-based simulator for scheduler behaviour web上でschedulerの動作を 試せるもの 今日紹介する scheduler_perfの仕組みを (ちょこっと)参考にしており、

    実際にクラスターを立ち上げ ることなく、 Schedulerの動作を再現する
  4. [前提] Schedulerって? 一文で超簡単にいうと →「PodをどのNodeに配置するのが最適か決めてくれるやつ」 https://kubernetes.io/ja/docs/concepts/scheduling-eviction/kube-scheduler/

  5. Kubernetes のコンポーネント図 引用: https://kubernetes.io/ja/docs/concepts/overview/components/

  6. どうやってパフォーマンス計測してるの? 結論: /test/integration/scheduler_perf にパフォーマンスを確認できるテストがある https://github.com/kubernetes/kubernetes/tree/master/test/integration/scheduler_p erf

  7. scheduler_perf のモチベーション Kubemarkのセットアップが大変 (README の方法で行くとGCE上でのセットアップが必要になる) → “Schedulerのみのパフォーマンス計測”であれば全てのコンポーネントは必要ない → 必要なコンポーネントのみを実行しよう -

    api server (+ etcd) - scheduler - PV controller
  8. scheduler_perf のモチベーション ↓こんな感じでmakeから一発で実行できる

  9. scheduler_perf のモチベーション こんな感じでworkloadを定義してパフォーマ ンスを計測できる → - Node作成 - Namespace作成 -

    Pod作成 などの動作をさせることが可能
  10. Schedulerに必要なコンポーネント /test/integration/scheduler_perf/util.goのmustSetupScheduler で必要なコンポーネントをセットアップしています

  11. Schedulerに必要なコンポーネント 1. Scheduler 主役なので当然必要。 /test/integration/util/util.goのStartSchedulerでscheduler.Newを直接呼び出して立ち 上げる

  12. Schedulerに必要なコンポーネント 1. Scheduler 2. api-server(+ etcd) 流石に必要。etcdは/hack/install-etcd.shを使用してinstallし、テストの実行の際に立ち 上げる。 (テスト実行前に/hack/lib/etcd.shのkube::etcd::start()でインストールしたetcdを立ち上 げている)

    APIサーバーは/test/integration/util/util.goのStartApiserverに立ち上げる。
  13. Schedulerに必要なコンポーネント 1. Scheduler 2. api-server(+ etcd) schedulerはEventHandlerを用いてPodやNodeなどの作成を見張っている。 Podが作成されるとそれを検知して、スケジュール待ちのキューに入れる → api-serverさえあればScheduleを開始することは可能

  14. Schedulerに必要なコンポーネント 1. Scheduler 2. api-server(+ etcd) 3. PV controller PV,

    PVCに関係するplugin(volumebinding)が存在するため必要 本物のPV controllerを使用する代わりに、Schedulerに必要なロジックのみを簡単に表 現したFakePVControllerを使用している (/test/integration/util/util.goのStartFakePVControllerで立ち上げている)
  15. まとめ - Kubernetesには、Kubemarkとは別にschedulerのパフォーマンスを計測するため のscheduler_perfというテストが存在する。 - scheduler_perfではクラスターを全て立ち上げるのではなく、スケジューラーにとっ て必要なコンポーネントのみを立ち上げるように工夫している