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
910
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
120
A Tale of Two Plugins: Safely Extending the Kubernetes Scheduler with WebAssembly
sanposhiho
0
100
人間によるKubernetesリソース最適化の”諦め” そこに見るリクガメの可能性
sanposhiho
2
1.9k
Don't try to tame your autoscalers, tame Tortoises!
sanposhiho
0
650
メルカリにおけるZone aware routing
sanposhiho
2
970
A tale of two plugins: safely extending the Kubernetes Scheduler with WebAssembly
sanposhiho
1
440
メルカリにおけるプラットフォーム主導のKubernetesリソース最適化とそこに生まれた🐢の可能性
sanposhiho
1
790
MercariにおけるKubernetesのリソース最適化のこれまでとこれから
sanposhiho
8
3.9k
The Kubernetes resource management and the behind systems in Mercari
sanposhiho
0
310
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
What's in a price? How to price your products and services
michaelherold
243
12k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Unsuck your backbone
ammeep
669
57k
The Cult of Friendly URLs
andyhume
78
6.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Facilitating Awesome Meetings
lara
50
6.1k
GitHub's CSS Performance
jonrohan
1030
460k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
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ではクラスターを全て立ち上げるのではなく、スケジューラーにとっ て必要なコンポーネントのみを立ち上げるように工夫している