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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ksudate
February 15, 2022
Programming
960
1
Share
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
620
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
5k
Other Decks in Programming
See All in Programming
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
310
Lessons from Spec-Driven Development
simas
PRO
0
130
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.5k
Moments When Things Go Wrong
aurimas
3
140
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
5.7k
エージェンティックRAGにAWSで入門しよう!
har1101
5
410
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
710
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
140
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
940
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
170
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
550
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Being A Developer After 40
akosma
91
590k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Mind Mapping
helmedeiros
PRO
1
230
A Tale of Four Properties
chriscoyier
163
24k
The SEO Collaboration Effect
kristinabergwall1
1
470
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