Slide 1

Slide 1 text

Service Topology による 効率的なロードバランシング チェシャ猫 (@y_taka_23) JAWS-UG コンテナ支部 #16 (2020/01/23)

Slide 2

Slide 2 text

東西分散クラスタの機運? https://aws.amazon.com/jp/blogs/news/in-the-works-aws-osaka-local-region-expansion-to-full-region/

Slide 3

Slide 3 text

そもそもマルチ AZ 構成は OK?

Slide 4

Slide 4 text

マルチ AZ クラスタの留意点 ● 障害時の可用性 ○ AZ がダウンすると複数の Node が同時に死ぬ ○ 複数 Node 上に分散していても全滅の危険 ● 通信のレイテンシ ○ Service から Pod への振り分けはラウンドロビン ○ Pod 間の通信で AZ を跨ぎたくない

Slide 5

Slide 5 text

マルチ AZ クラスタの留意点 ● 障害時の可用性:Topology Spread ○ AZ がダウンすると複数の Node が同時に死ぬ ○ 複数 Node 上に分散していても全滅の危険 ● 通信のレイテンシ:Service Topology ○ Service から Pod への振り分けはラウンドロビン ○ Pod 間の通信で AZ を跨ぎたくない

Slide 6

Slide 6 text

Topology Spread の参考スライド https://speakerdeck.com/ytaka23/kubernetes-meetup-tokyo-25th

Slide 7

Slide 7 text

まず通常の Service を復習

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

もうちょい内部の仕組みを知ろう

Slide 10

Slide 10 text

iptables

Slide 11

Slide 11 text

iptables

Slide 12

Slide 12 text

iptables

Slide 13

Slide 13 text

iptables

Slide 14

Slide 14 text

Service Topology

Slide 15

Slide 15 text

Service Topology とは ● Kubernetes v1.17 の α 機能 ● ネットワークを Node 上の Label で表現 ○ AWS 上では自動で付与されるラベルが使える ● 効率的な Pod-Pod 間の通信が可能に ○ ネットワーク的に「近い」Pod を狙って通信 ○ hostname, zone, region をサポート ○ Pod が無い場合に多段 Fallback も設定できる

Slide 16

Slide 16 text

Service Topology の定義

Slide 17

Slide 17 text

Service Topology の定義 まず同じ Node 内で Pod を探す

Slide 18

Slide 18 text

Service Topology の定義 無ければ同じ Zone 内で探す

Slide 19

Slide 19 text

Service Topology の定義 それでも無ければ任意の場所

Slide 20

Slide 20 text

機能の本体は EndpointSlice

Slide 21

Slide 21 text

EndpointSlice ● Service に属する Endpoint を分割 ○ Pod 100 個ごとに分割、部分的に更新可能 ○ 通信コストを下げることができる ● Endpoint の改良版的な扱い ○ Kubernetes v1.17 時点で β 機能 ○ API が再設計されている ○ Pod に対応する Topology の情報を保持

Slide 22

Slide 22 text

EndpointSlice の分割 101 個の Pod 2 個に分割された EndpointSlice

Slide 23

Slide 23 text

Topology 情報の保持

Slide 24

Slide 24 text

iptables

Slide 25

Slide 25 text

iptables

Slide 26

Slide 26 text

iptables

Slide 27

Slide 27 text

iptables

Slide 28

Slide 28 text

まとめ ● マルチ AZ クラスタの留意点 ○ AZ を跨いだ Pod 間通信のレイテンシの問題 ● Service Topology で通信を効率化 ○ ネットワーク的に「近い」Pod を選択 ● 背後にあるのは EndpointSlice ○ 従来の Endpoint を分割・トポロジ情報を追加

Slide 29

Slide 29 text

Serve Services Serviceably! Presented by チェシャ猫 (@y_taka_23)