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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ksudate
February 15, 2022
Programming
1
930
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.3k
KubeCon + CNCon Europe 2023 Recap Flux Beyond Git: Harnessing the Power of OCI
ksudate
1
19k
KubeCon + CNCon Europe 2022 Recap ~ Istio Today and Tomorrow: Sidecars and Beyond
ksudate
1
590
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
4.9k
Other Decks in Programming
See All in Programming
Sekiban + Microsoft Orleans のアクターをAWS対応しました / Sekiban + Microsoft Orleans actors are now supported on AWS.
tomohisa
0
120
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
370
ぼくの開発環境2026
yuzneri
1
280
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
160
Gemini for developers
meteatamel
0
120
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
10
5k
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
1
590
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
140
その「common」ディレクトリ、腐っていませんか?
kinocoboy2
1
110
CSC307 Lecture 07
javiergs
PRO
1
560
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
150
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.6k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Documentation Writing (for coders)
carmenintech
77
5.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
130
[SF Ruby Conf 2025] Rails X
palkan
2
790
Mobile First: as difficult as doing things right
swwweet
225
10k
Skip the Path - Find Your Career Trail
mkilby
0
65
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
290
Fireside Chat
paigeccino
41
3.8k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
160
Scaling GitHub
holman
464
140k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
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