Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PodのAZ分散を実現する Pod Topology Spread ConstraintsとD...
Search
ksudate
February 15, 2022
Programming
970
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PodのAZ分散を実現する Pod Topology Spread ConstraintsとDescheduler
Kubernetes Novice Tokyo #16 (
https://k8s-novice-jp.connpass.com/event/236328/
) のLT枠の登壇資料です。
ksudate
February 15, 2022
More Decks by ksudate
See All by ksudate
ZOZOTOWNにおけるKubernetes Cluster Upgradeの これまでとこれから
ksudate
2
2.6k
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
640
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
5.1k
Other Decks in Programming
See All in Programming
Heart of Swift Concurrency
koher
0
370
高専キャリア LT 発表内容
crysta1221
6
5.7k
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
140
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
370
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
310
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
What We Talk About When We Talk About XP
m_seki
2
580
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
540
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
160
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Leo the Paperboy
mayatellez
9
2.3k
Building Applications with DynamoDB
mza
96
7.2k
Thoughts on Productivity
jonyablonski
76
5.4k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
Abbi's Birthday
coloredviolet
3
9.9k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
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