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
PodのAZ分散を実現する Pod Topology Spread ConstraintsとD...
Search
ksudate
February 15, 2022
Programming
1
910
PodのAZ分散を実現する Pod Topology Spread ConstraintsとDescheduler
Kubernetes Novice Tokyo #16 (
https://k8s-novice-jp.connpass.com/event/236328/
) のLT枠の登壇資料です。
ksudate
February 15, 2022
Tweet
Share
More Decks by ksudate
See All by ksudate
ZOZOTOWNにおけるKubernetes Cluster Upgradeの これまでとこれから
ksudate
2
2.2k
KubeCon + CNCon Europe 2023 Recap Flux Beyond Git: Harnessing the Power of OCI
ksudate
1
18k
KubeCon + CNCon Europe 2022 Recap ~ Istio Today and Tomorrow: Sidecars and Beyond
ksudate
1
580
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
4.8k
Other Decks in Programming
See All in Programming
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
150
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.5k
Patterns of Patterns
denyspoltorak
0
390
愛される翻訳の秘訣
kishikawakatsumi
3
360
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
560
Graviton と Nitro と私
maroon1st
0
150
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
170
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
160
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
150
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
610
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
240
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
33
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
30
Technical Leadership for Architectural Decision Making
baasie
0
190
The Invisible Side of Design
smashingmag
302
51k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
270
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
46k
A Soul's Torment
seathinner
1
2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
180
Typedesign – Prime Four
hannesfritz
42
2.9k
Transcript
PodのAZ分散を実現する Pod Topology Spread Constraintsと Descheduler Kubernetes Novice Tokyo
#16 2022/02/15 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立健太郎 Copyright © ZOZO, Inc.
© ZOZO, Inc. 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立 健太郎 新卒SREとして、
ZOZOTOWNリプレイスプロジェクトに参画 Kubernetes歴はもうすぐ1年 Twitter: @tmrekk_ 2
© ZOZO, Inc. https://zozo.jp/ 3 • ファッション通販サイト • 1,500以上のショップ、8,400以上のブランドの取り扱い •
常時83万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品を掲載(2021年12月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など
© ZOZO, Inc. https://wear.jp/ 4 • ファッションコーディネートアプリ • 1,500万ダウンロード突破、コーディネート投稿総数は1,200万 件以上(2021年12月末時点)
• ピックアップタグから最新のトレンドをチェック • コーディネート着用アイテムを公式サイトで購入可能 • WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレン ト・デザイナー・インフルエンサーといった各界著名人も参加
© ZOZO, Inc. 5 今回話すこと • Pod Topology Spread Constraintsとは
• Pod Topology Spread Constraints導入における課題 • Deschedulerとは
© ZOZO, Inc. 6 region・zone・NODEなどの単位でPODを分散して配置する。 これにより、高い可用性を実現可能。 Pod Topology Spread Constraintsとは
© ZOZO, Inc. 7 Pod Topology Spread Constraintsとは zoneAにPODが2台配置
© ZOZO, Inc. 8 Pod Topology Spread Constraintsとは zoneAにて障害発生
© ZOZO, Inc. 9 Pod Topology Spread Constraintsとは zoneA・zoneBにPODが1台ずつ配置
© ZOZO, Inc. 10 Pod Topology Spread Constraintsとは zoneAにて障害発生
© ZOZO, Inc. 11 zone障害によるサービス 影響を軽減できる Pod Topology Spread Constraintsとは
© ZOZO, Inc. 12 Pod Topology Spread Constraintsとは
© ZOZO, Inc. 13 • maxSkew • topologyKey • whenUnsatisfiable
• labelSelector Pod Topology Spread Constraintsとは
© ZOZO, Inc. 14 • maxSkew • topologyKey • whenUnsatisfiable
• labelSelector Pod Topology Spread Constraintsとは
© ZOZO, Inc. 15 maxSkew トポロジードメイン間のPOD数の差を制限することができる 今回の例では、topology.kubernetes.io/zoneとあるようにzone間のPOD数の 差を制限する Pod Topology
Spread Constraintsとは
© ZOZO, Inc. 16 zoneC配置後のzone間のPOD数の差は、 0なので配置できる Pod Topology Spread Constraintsとは
© ZOZO, Inc. 17 zoneB配置後のzone間のPOD数の差は、 zoneBとzoneCで2(>1)なので配置できない Pod Topology Spread Constraintsとは
© ZOZO, Inc. 18 • maxSkew • topologyKey • whenUnsatisfiable
• labelSelector Pod Topology Spread Constraintsとは
© ZOZO, Inc. 19 topologyKey PODを分散する単位を指定することが可能 今回の例では、topology.kubernetes.io/zoneとあるようにzoneごとにPODを 分散する zoneの他に、regionや手動で作成したLabelを指定することが可能 Pod
Topology Spread Constraintsとは
© ZOZO, Inc. 20 • maxSkew • topologyKey • whenUnsatisfiable
• labelSelector Pod Topology Spread Constraintsとは
© ZOZO, Inc. 21 whenUnsatisfiable 条件に合致するNODEがない場合のPODの挙動を設定可能 • DoNotSchedule 条件に合致しない場合、PODがスケジュールされることはない •
ScheduleAnyway 条件に合致しない場合、Skewを最小化するNODEに優先的に スケジュールする Pod Topology Spread Constraintsとは
© ZOZO, Inc. 22 DoNotScheduleの場合は配置されない ScheduleAnywayの場合は配置される Pod Topology Spread Constraintsとは
© ZOZO, Inc. 23 • maxSkew • topologyKey • whenUnsatisfiable
• labelSelector Pod Topology Spread Constraintsとは
© ZOZO, Inc. 24 labelSelector labelSelectorに指定したLabelを持つPODが分散配置の対象 今回の例では、app:myappラベルを持つPODが対象 Pod Topology Spread
Constraintsとは
© ZOZO, Inc. 25 Pod Topology Spread Constraints導入における課題 Pod Topology
Spread Constraintsを使ってPODのzone分散を実現することができた しかし、Pod Topology Spread Constraintsはスケジュール済みのPODが均等に配置して いるかどうかを制御することはない
© ZOZO, Inc. 26 つまり、NODEで障害が発生した場合、PODが他のNODEに移動した後、そのままの状態 zoneAにて障害発生 zoneBにPod移動 復旧後、移動なし Pod Topology
Spread Constraints導入における課題
© ZOZO, Inc. 27 Deschedulerとは スケジュール済のPODを他のNODEに移動させたい場合に、 PODをEvictすることで再度スケジュールさせることが可能 これにより、常にPODを均等に分散することが可能
© ZOZO, Inc. 28 • デプロイ方法は、Deployment・CronJob・Jobから選択 • EvictするPODはPolicyにより定義 • PODのスケジュールはデフォルトのスケジューラに依存
• github.com/kubernetes-sigs/descheduler Deschedulerとは
© ZOZO, Inc. 29 Deschedulerには、Pod Topology Spread Constraintsに違反したPODを EvictするためのPolicyが用意されている Deschedulerとは
© ZOZO, Inc. 30 Deschedulerとは PolicyをもとにEvictされたPODは再度デフォルトのスケジューラによって 配置されることでPod Topology Spread Constraintに基づき分散配置される
これにより、常にPODを均等に分散することが可能になる
© ZOZO, Inc. 31 Deschedulerとは ①Policy違反状態 ③Podの再配置 ②Eviction発生 Policyに基づき、PodをEvict
© ZOZO, Inc. 32 まとめ • Pod Topology Spread Constraints
◦ region・zone・NODEなどの単位でPODを分散して配置することで高い可用性を実現 • Descheduler ◦ スケジュール済のPODを他のNODEに移動させたい場合に、PODをEvictすることで再度スケ ジュールさせることが可能 ◦ EvictするPODはPolicyによって定義可能で、Pod Topology Spread Constraints用のPolicyも 用意されている
None