Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Service Topology による効率的なロードバランシング #jawsug_ct / JAWS Container SIG 16th

y_taka_23
January 23, 2020

Service Topology による効率的なロードバランシング #jawsug_ct / JAWS Container SIG 16th

JAWS コンテナ支部 #16 で使用したスライドです。

Kubernetes 上にデプロイされたアプリケーションが安定して稼働するためには、複数の Pod が複数の故障ドメインにまたがって配置されていることが重要です。反面、一般には故障ドメインをまたぐ通信はオーバヘッドがかかるため、パフォーマンスの観点から言うと通信はできるだけ同じ故障ドメイン内で完結している方が有利になります。

今回の LT では、この「故障ドメイン内で通信を完結させる」機能である Service Topology を紹介します。Node に対して Label を用いてグルーピングを行うことで、Service リソースによるロードバランスが、同一の故障ドメイン内に優先して行われるようになる機能です。

イベント概要:https://jawsug-container.connpass.com/event/160835/

y_taka_23

January 23, 2020
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

  1. マルチ AZ クラスタの留意点 • 障害時の可用性 ◦ AZ がダウンすると複数の Node が同時に死ぬ

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

    が同時に死ぬ ◦ 複数 Node 上に分散していても全滅の危険 • 通信のレイテンシ:Service Topology ◦ Service から Pod への振り分けはラウンドロビン ◦ Pod 間の通信で AZ を跨ぎたくない
  3. Service Topology とは • Kubernetes v1.17 の α 機能 •

    ネットワークを Node 上の Label で表現 ◦ AWS 上では自動で付与されるラベルが使える • 効率的な Pod-Pod 間の通信が可能に ◦ ネットワーク的に「近い」Pod を狙って通信 ◦ hostname, zone, region をサポート ◦ Pod が無い場合に多段 Fallback も設定できる
  4. EndpointSlice • Service に属する Endpoint を分割 ◦ Pod 100 個ごとに分割、部分的に更新可能

    ◦ 通信コストを下げることができる • Endpoint の改良版的な扱い ◦ Kubernetes v1.17 時点で β 機能 ◦ API が再設計されている ◦ Pod に対応する Topology の情報を保持
  5. まとめ • マルチ AZ クラスタの留意点 ◦ AZ を跨いだ Pod 間通信のレイテンシの問題

    • Service Topology で通信を効率化 ◦ ネットワーク的に「近い」Pod を選択 • 背後にあるのは EndpointSlice ◦ 従来の Endpoint を分割・トポロジ情報を追加