Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kubernetesはschedulerのパフォーマンスをどのように計測しているか
Search
sanposhiho
July 21, 2021
4
880
Kubernetesはschedulerのパフォーマンスをどのように計測しているか
Kubernetes Meetup Tokyo #43 LT
https://k8sjp.connpass.com/event/217089/
sanposhiho
July 21, 2021
Tweet
Share
More Decks by sanposhiho
See All by sanposhiho
kube-scheduler: from 101 to the frontier
sanposhiho
1
110
A Tale of Two Plugins: Safely Extending the Kubernetes Scheduler with WebAssembly
sanposhiho
0
95
人間によるKubernetesリソース最適化の”諦め” そこに見るリクガメの可能性
sanposhiho
2
1.9k
Don't try to tame your autoscalers, tame Tortoises!
sanposhiho
0
630
メルカリにおけるZone aware routing
sanposhiho
2
920
A tale of two plugins: safely extending the Kubernetes Scheduler with WebAssembly
sanposhiho
1
430
メルカリにおけるプラットフォーム主導のKubernetesリソース最適化とそこに生まれた🐢の可能性
sanposhiho
1
770
MercariにおけるKubernetesのリソース最適化のこれまでとこれから
sanposhiho
8
3.9k
The Kubernetes resource management and the behind systems in Mercari
sanposhiho
0
310
Featured
See All Featured
Happy Clients
brianwarren
98
6.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
It's Worth the Effort
3n
183
27k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Language of Interfaces
destraynor
154
24k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Become a Pro
speakerdeck
PRO
25
5k
Visualization
eitanlees
145
15k
Transcript
Kubernetesはschedulerのパフォーマ ンスをどのように計測しているか @sanposhiho
お前 is 誰 名前: Kensei Nakada / sanposhiho 所属: 京都大学
Google Summer of Code @Kubernetes @sanposhiho @sanpo_shiho
web-based simulator for scheduler behaviour web上でschedulerの動作を 試せるもの 今日紹介する scheduler_perfの仕組みを (ちょこっと)参考にしており、
実際にクラスターを立ち上げ ることなく、 Schedulerの動作を再現する
[前提] Schedulerって? 一文で超簡単にいうと →「PodをどのNodeに配置するのが最適か決めてくれるやつ」 https://kubernetes.io/ja/docs/concepts/scheduling-eviction/kube-scheduler/
Kubernetes のコンポーネント図 引用: https://kubernetes.io/ja/docs/concepts/overview/components/
どうやってパフォーマンス計測してるの? 結論: /test/integration/scheduler_perf にパフォーマンスを確認できるテストがある https://github.com/kubernetes/kubernetes/tree/master/test/integration/scheduler_p erf
scheduler_perf のモチベーション Kubemarkのセットアップが大変 (README の方法で行くとGCE上でのセットアップが必要になる) → “Schedulerのみのパフォーマンス計測”であれば全てのコンポーネントは必要ない → 必要なコンポーネントのみを実行しよう -
api server (+ etcd) - scheduler - PV controller
scheduler_perf のモチベーション ↓こんな感じでmakeから一発で実行できる
scheduler_perf のモチベーション こんな感じでworkloadを定義してパフォーマ ンスを計測できる → - Node作成 - Namespace作成 -
Pod作成 などの動作をさせることが可能
Schedulerに必要なコンポーネント /test/integration/scheduler_perf/util.goのmustSetupScheduler で必要なコンポーネントをセットアップしています
Schedulerに必要なコンポーネント 1. Scheduler 主役なので当然必要。 /test/integration/util/util.goのStartSchedulerでscheduler.Newを直接呼び出して立ち 上げる
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に立ち上げる。
Schedulerに必要なコンポーネント 1. Scheduler 2. api-server(+ etcd) schedulerはEventHandlerを用いてPodやNodeなどの作成を見張っている。 Podが作成されるとそれを検知して、スケジュール待ちのキューに入れる → api-serverさえあればScheduleを開始することは可能
Schedulerに必要なコンポーネント 1. Scheduler 2. api-server(+ etcd) 3. PV controller PV,
PVCに関係するplugin(volumebinding)が存在するため必要 本物のPV controllerを使用する代わりに、Schedulerに必要なロジックのみを簡単に表 現したFakePVControllerを使用している (/test/integration/util/util.goのStartFakePVControllerで立ち上げている)
まとめ - Kubernetesには、Kubemarkとは別にschedulerのパフォーマンスを計測するため のscheduler_perfというテストが存在する。 - scheduler_perfではクラスターを全て立ち上げるのではなく、スケジューラーにとっ て必要なコンポーネントのみを立ち上げるように工夫している