Slide 1

Slide 1 text

PodのAZ分散を実現する Pod Topology Spread Constraintsと Descheduler 
 Kubernetes Novice Tokyo #16 2022/02/15 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立健太郎 Copyright © ZOZO, Inc.

Slide 2

Slide 2 text

© ZOZO, Inc. 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立 健太郎 新卒SREとして、 ZOZOTOWNリプレイスプロジェクトに参画 Kubernetes歴はもうすぐ1年 Twitter: @tmrekk_ 
 
 2

Slide 3

Slide 3 text

© ZOZO, Inc. https://zozo.jp/ 3 ● ファッション通販サイト ● 1,500以上のショップ、8,400以上のブランドの取り扱い ● 常時83万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品を掲載(2021年12月末時点) ● ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 ● 即日配送サービス ● ギフトラッピングサービス ● ツケ払い など

Slide 4

Slide 4 text

© ZOZO, Inc. https://wear.jp/ 4 ● ファッションコーディネートアプリ ● 1,500万ダウンロード突破、コーディネート投稿総数は1,200万 件以上(2021年12月末時点) ● ピックアップタグから最新のトレンドをチェック ● コーディネート着用アイテムを公式サイトで購入可能 ● WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレン ト・デザイナー・インフルエンサーといった各界著名人も参加

Slide 5

Slide 5 text

© ZOZO, Inc. 5 今回話すこと ● Pod Topology Spread Constraintsとは ● Pod Topology Spread Constraints導入における課題 ● Deschedulerとは

Slide 6

Slide 6 text

© ZOZO, Inc. 6 region・zone・NODEなどの単位でPODを分散して配置する。 これにより、高い可用性を実現可能。 Pod Topology Spread Constraintsとは

Slide 7

Slide 7 text

© ZOZO, Inc. 7 Pod Topology Spread Constraintsとは zoneAにPODが2台配置

Slide 8

Slide 8 text

© ZOZO, Inc. 8 Pod Topology Spread Constraintsとは zoneAにて障害発生

Slide 9

Slide 9 text

© ZOZO, Inc. 9 Pod Topology Spread Constraintsとは zoneA・zoneBにPODが1台ずつ配置

Slide 10

Slide 10 text

© ZOZO, Inc. 10 Pod Topology Spread Constraintsとは zoneAにて障害発生

Slide 11

Slide 11 text

© ZOZO, Inc. 11 zone障害によるサービス 影響を軽減できる Pod Topology Spread Constraintsとは

Slide 12

Slide 12 text

© ZOZO, Inc. 12 Pod Topology Spread Constraintsとは

Slide 13

Slide 13 text

© ZOZO, Inc. 13 ● maxSkew ● topologyKey ● whenUnsatisfiable ● labelSelector Pod Topology Spread Constraintsとは

Slide 14

Slide 14 text

© ZOZO, Inc. 14 ● maxSkew ● topologyKey ● whenUnsatisfiable ● labelSelector Pod Topology Spread Constraintsとは

Slide 15

Slide 15 text

© ZOZO, Inc. 15 maxSkew トポロジードメイン間のPOD数の差を制限することができる 今回の例では、topology.kubernetes.io/zoneとあるようにzone間のPOD数の 差を制限する Pod Topology Spread Constraintsとは

Slide 16

Slide 16 text

© ZOZO, Inc. 16 zoneC配置後のzone間のPOD数の差は、 0なので配置できる Pod Topology Spread Constraintsとは

Slide 17

Slide 17 text

© ZOZO, Inc. 17 zoneB配置後のzone間のPOD数の差は、 zoneBとzoneCで2(>1)なので配置できない Pod Topology Spread Constraintsとは

Slide 18

Slide 18 text

© ZOZO, Inc. 18 ● maxSkew ● topologyKey ● whenUnsatisfiable ● labelSelector Pod Topology Spread Constraintsとは

Slide 19

Slide 19 text

© ZOZO, Inc. 19 topologyKey PODを分散する単位を指定することが可能 今回の例では、topology.kubernetes.io/zoneとあるようにzoneごとにPODを 分散する zoneの他に、regionや手動で作成したLabelを指定することが可能 Pod Topology Spread Constraintsとは

Slide 20

Slide 20 text

© ZOZO, Inc. 20 ● maxSkew ● topologyKey ● whenUnsatisfiable ● labelSelector Pod Topology Spread Constraintsとは

Slide 21

Slide 21 text

© ZOZO, Inc. 21 whenUnsatisfiable 条件に合致するNODEがない場合のPODの挙動を設定可能 ● DoNotSchedule 条件に合致しない場合、PODがスケジュールされることはない ● ScheduleAnyway 条件に合致しない場合、Skewを最小化するNODEに優先的に スケジュールする Pod Topology Spread Constraintsとは

Slide 22

Slide 22 text

© ZOZO, Inc. 22 DoNotScheduleの場合は配置されない ScheduleAnywayの場合は配置される Pod Topology Spread Constraintsとは

Slide 23

Slide 23 text

© ZOZO, Inc. 23 ● maxSkew ● topologyKey ● whenUnsatisfiable ● labelSelector Pod Topology Spread Constraintsとは

Slide 24

Slide 24 text

© ZOZO, Inc. 24 labelSelector labelSelectorに指定したLabelを持つPODが分散配置の対象 今回の例では、app:myappラベルを持つPODが対象 Pod Topology Spread Constraintsとは

Slide 25

Slide 25 text

© ZOZO, Inc. 25 Pod Topology Spread Constraints導入における課題 Pod Topology Spread Constraintsを使ってPODのzone分散を実現することができた しかし、Pod Topology Spread Constraintsはスケジュール済みのPODが均等に配置して いるかどうかを制御することはない

Slide 26

Slide 26 text

© ZOZO, Inc. 26 つまり、NODEで障害が発生した場合、PODが他のNODEに移動した後、そのままの状態 zoneAにて障害発生 zoneBにPod移動 復旧後、移動なし Pod Topology Spread Constraints導入における課題

Slide 27

Slide 27 text

© ZOZO, Inc. 27 Deschedulerとは スケジュール済のPODを他のNODEに移動させたい場合に、 PODをEvictすることで再度スケジュールさせることが可能 これにより、常にPODを均等に分散することが可能

Slide 28

Slide 28 text

© ZOZO, Inc. 28 ● デプロイ方法は、Deployment・CronJob・Jobから選択 ● EvictするPODはPolicyにより定義 ● PODのスケジュールはデフォルトのスケジューラに依存 ● github.com/kubernetes-sigs/descheduler Deschedulerとは

Slide 29

Slide 29 text

© ZOZO, Inc. 29 Deschedulerには、Pod Topology Spread Constraintsに違反したPODを EvictするためのPolicyが用意されている Deschedulerとは

Slide 30

Slide 30 text

© ZOZO, Inc. 30 Deschedulerとは PolicyをもとにEvictされたPODは再度デフォルトのスケジューラによって 配置されることでPod Topology Spread Constraintに基づき分散配置される これにより、常にPODを均等に分散することが可能になる

Slide 31

Slide 31 text

© ZOZO, Inc. 31 Deschedulerとは ①Policy違反状態 ③Podの再配置 ②Eviction発生 Policyに基づき、PodをEvict

Slide 32

Slide 32 text

© ZOZO, Inc. 32 まとめ ● Pod Topology Spread Constraints ○ region・zone・NODEなどの単位でPODを分散して配置することで高い可用性を実現 ● Descheduler ○ スケジュール済のPODを他のNODEに移動させたい場合に、PODをEvictすることで再度スケ ジュールさせることが可能 ○ EvictするPODはPolicyによって定義可能で、Pod Topology Spread Constraints用のPolicyも 用意されている

Slide 33

Slide 33 text

No content