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
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.5k
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
630
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
5.1k
Other Decks in Programming
See All in Programming
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
580
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
260
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
460
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
430
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
200
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
730
Introducing Stack Pull Request in GitHub
kkamegawa
0
110
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
440
MySQLとPostgreSQLって何が違うの?
akagami
0
150
ALB ログから Trace を気合で繋げる技術
fohte
7
770
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
370
Go 1.27 における memory allocation の高速化
andpad
0
350
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.6k
Code Reviewing Like a Champion
maltzj
528
40k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Designing for humans not robots
tammielis
254
26k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
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