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
CA_kube-scheduler
Search
himura467
October 24, 2024
23
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CA_kube-scheduler
himura467
October 24, 2024
More Decks by himura467
See All by himura467
Figma MCP 勉強会
himura
0
21
基盤モデルのアーキテクチャを改造してみよう - 時系列基盤モデルのマルチモーダル拡張事例の紹介 -
himura
1
1.3k
Python アプリケーションの裏側とその機序 -WSGI, ASGI 編-
himura
0
92
人生における期待効用の最大化について考える
himura
0
120
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
220
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Design in an AI World
tapps
1
240
RailsConf 2023
tenderlove
30
1.5k
Building the Perfect Custom Keyboard
takai
2
790
Believing is Seeing
oripsolob
1
150
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Designing for Performance
lara
611
70k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Transcript
CyberAgent MLPlatform インターン 最終発表 設楽 朗人
- FragileGroupScheduling の isAllPrioritySame 関数において PreemptionPolicy == Never であれば許容するように修正 -
FragileGroupScheduling の PreFilter Phase において、Group 内 Pod 間の Affinity / Anti-Affinity が満たされているかを早期に 検査するように機能を追加 やったこと
PreemptionPolicy
PreemptionPolicy PreemptionPolicy が nil の場合はデフォルトが指定される デフォルトは LowerPriority らしい
PreemptionPolicy テストケースに Higher Priority であり Preemption が Never である Pod
を追加
PreemptionPolicy テストケースに Higher Priority であり Preemption が Never である Pod
を追加 ↓ テストケースが正しく通ることを確認
Affinity / Anti-Affinity 何が嬉しいか PodGroup は全て Bind されるか全て棄却されるか のどちらかであるため、 PodGroup
内に Pod 間で Affinity / Anti-Affinity を違反する Pod が 一つでも存在した時点で全て棄却されることが確定する。 これを PodGroup の中の一つの Pod を見るだけで判断できる ようになれば、パフォーマンスの向上が期待できるのではないか
Affinity / Anti-Affinity
Affinity / Anti-Affinity
Affinity / Anti-Affinity PodGroup
Affinity / Anti-Affinity PodGroup 相互の Affinity 関係を検証
Affinity / Anti-Affinity PodGroup ダメだったらその時点で Group 全て棄却
Affinity / Anti-Affinity PreFilter 関数で Group 内の Pod の Affinity
をチェック
Affinity / Anti-Affinity 実装は本家 Kubernetes の kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go の podMatchesAllAffinityTerms 関数をほぼパクった
Affinity / Anti-Affinity ハマりポイント Affinity Term は自身には適用すべきでないので、Kubernetes 本家のように Terms をまとめて検査することができなかった。
↓ UID で判定して自身以外の Pod のみを Term に適用するように修正した。
Affinity / Anti-Affinity テスト 新たなテストを定義し、 - GroupSize を 2 とした
basic な Pod - PodAffinity として GroupSize=2 を指定した Pod - PodAffinity として GroupSize=3 を指定した Pod - PodAntiAffinity として GroupSize=2 を指定した Pod - PodAntiAffinity として GroupSize=3 を指定した Pod を宣言
Affinity / Anti-Affinity テスト - Affinity Pod が PodGroup に含まれており、Affinity
に違反しないケース - Affinity Pod が PodGroup に含まれており、Affinity に違反するケース - Anti-Affinity Pod が PodGroup に含まれており、Anti-Affinity に違反しないケース - Anti-Affinity Pod が PodGroup に含まれており、Anti-Affinity に違反するケース - Affinity Pod, Anti-Affinity Pod が含まれており、違反しないケース - Affinity Pod, Anti-Affinity Pod が含まれており、Affinity に違反するケース - Affinity Pod, Anti-Affinity Pod が含まれており、Anti-Affinity に違反するケース - Affinity Pod, Anti-Affinity Pod が含まれており、どちらにも違反するケース において、正しく動作することを確認
Affinity / Anti-Affinity テスト テスト網羅性は ふわっと
まとめ - やったこと - PreemptionPolicy - PreemptionPolicy が nil の場合の話
- テストを書いたよ、という話 - Affinity / Anti-Affinity - 何が嬉しいか - 図解 - 実装の説明 - ハマりポイント - テスト