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
1k
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
Understanding the Kubernetes Scheduler: Internals, Roadmap, and Contributions
sanposhiho
1
95
kube-scheduler: from 101 to the frontier
sanposhiho
1
230
A Tale of Two Plugins: Safely Extending the Kubernetes Scheduler with WebAssembly
sanposhiho
0
170
人間によるKubernetesリソース最適化の”諦め” そこに見るリクガメの可能性
sanposhiho
2
2k
Don't try to tame your autoscalers, tame Tortoises!
sanposhiho
0
760
メルカリにおけるZone aware routing
sanposhiho
2
1.3k
A tale of two plugins: safely extending the Kubernetes Scheduler with WebAssembly
sanposhiho
1
570
メルカリにおけるプラットフォーム主導のKubernetesリソース最適化とそこに生まれた🐢の可能性
sanposhiho
1
930
MercariにおけるKubernetesのリソース最適化のこれまでとこれから
sanposhiho
8
4.1k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Designing for humans not robots
tammielis
254
25k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Practical Orchestrator
shlominoach
190
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
The Language of Interfaces
destraynor
162
25k
Faster Mobile Websites
deanohume
310
31k
The Pragmatic Product Professional
lauravandoore
36
6.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
The Invisible Side of Design
smashingmag
301
51k
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ではクラスターを全て立ち上げるのではなく、スケジューラーにとっ て必要なコンポーネントのみを立ち上げるように工夫している