ZAP - ZCPをベースとしたマルチK8sのアプリケーション実行基盤 #YJTC / YJTC21 B-3

32.5K Views

January 12, 21

スライド概要

このセッションでは、ZCPの課題やヤフーの要件に対して、ZAPが、どのように応えたかをご説明することで、ZAPというアプリケーション実行基盤の特徴をご紹介いたします。

Yahoo! JAPAN Tech Conference 2021 は2021年1月22日に開催しました。
https://techconference.yahoo.co.jp/2021/

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

ZAP ZCPをベースとしたマルチK8sのアプリケーション実行基盤 Z Lab ゼットラボ株式会社 備海 裕之 ©2021 Z Lab Corporation All rights reserved.

2.

備海 裕之 ゼットラボ株式会社 ZAPチームリーダー 2007年ヤフー中途入社。エンジニア。ショッピン グ、CTO室SWAT、ヤフオク!を経て、2015年から ゼットラボに出向。 Copyrights 2019 Yahoo Japan Corporation. All Rights Reserved. ©2021 Z Lab Corporation All rights reserved.

3.

ゼットラボ株式会社 Z Lab • ヤフーの100%子会社 • ヤフーのサービスを支えるインフラ基盤を研究開発

4.

このセッションについて このセッションでは、ZCPの課題やヤフーの要件に対して、 ZAPが、どのように応えたかをご説明することで、ZAPという アプリケーション実行基盤の特徴をご紹介いたします。 ⚠️ この資料ではKubernetesをK8sと略しています。 ©2021 Z Lab Corporation All rights reserved.

5.

アジェンダ 1. ZCPの課題に応える 2. ヤフーの要件を満たす ©2021 Z Lab Corporation All rights reserved.

6.

ZCPの課題に応える ©2021 Z Lab Corporation All rights reserved. 6

7.

ZCPの課題に応える ZCPとZAP ZCP:ヤフーで広く使われている、K8s as a Serviceの基盤。利用者に専用のK8sクラ スタを提供。 ZAP:ZCPの上に構築したアプリケーショ ン実行基盤。少数のサービスで試験的に利 用中。 アプリ ZAP ZCP ⚠️ 図中ではアプリケーションをアプリと略しています。 ©2021 Z Lab Corporation All rights reserved.

8.

ZCPの課題に応える ZAPはZCPの課題からスタート • K8sクラスタの管理が大変 • YAMLの用意が大変 • トラブルシューティングが難しい K8sをそのまま利用していることに起因。 💡 K8sを一段階抽象化した基盤を作れば、課題を解決できそう。 ©2021 Z Lab Corporation All rights reserved.

9.

ZCPの課題に応える 課題:K8sクラスタの管理が大変 ZCP ZCP 利用者A シングルテナントK8s サービスA ZCP 利用者B シングルテナントK8s サービスB ZAP ZAP 管理者 マルチテナントK8s Namespace A サービスA Namespace B サービスB ZAP 利用者A ZAP 利用者B シングルテナントのK8sを ZCP利用者が管理 マルチテナントのK8sを ZAP管理者が管理 ©2021 Z Lab Corporation All rights reserved.

10.

ZCPの課題に応える 課題:YAMLの用意が大変 • アプリケーションのデプロイや公開には、 たくさんの種類のK8sリソースが必要。 • それぞれについて、使い方や変更点を確認 するのは大変。 • ZAPでは、Appというカスタムリソースを 元に、必要なK8sリソースを自動作成。 ZAP 利用者 App K8sの各種リソース Deployment Ingress Service PodDistruptionBudget HorizontalPodAutoscaler VerticalPodAutoscaler ©2021 Z Lab Corporation All rights reserved.

11.

ZCPの課題に応える 課題:トラブルシューティングが難しい • K8sでは、たくさんのリソースがアプリケーションの稼働に関係。 • 不具合の調査には、関連リソースの確認など、職人的な技術が必要。 • ZAPでは、K8s熟練者のノウハウをコマンド化することで、だれでも、高度な トラブルシューティングが可能。 ©2021 Z Lab Corporation All rights reserved.

12.

ZAPのトラブルシューティングコマンド flctl controls fleet Apps Troubleshooting and Debugging Commands: describe Show details of a specified resource logs Print the logs for a container within a Pod attach Attach to a process that is already running in an existing container exec Execute a command in a container restart Restart an app evict Evict Pod diagnose Diagnose application problems flctlは、ZAPでアプリケーションを操作するためのCLIです。 12

13.

✅ ZCPの課題に応える • K8sクラスタの管理が大変 • YAMLの用意が大変 • トラブルシューティングが難しい ©2021 Z Lab Corporation All rights reserved.

14.

ヤフーの要件を満たす ©2021 Z Lab Corporation All rights reserved. 14

15.

ヤフーの要件を満たす ZAPの開発方針 • ヤフーで使うことを前提に、ヤフーのために作成。 • カタログスペックにはこだわらず、課題や要件に応えることに注力。 • 無駄な機能がないため、ソフトウェアをシンプルに保てる。 • 利用者が限定されているため、仕様変更や機能削除がしやすい。 ©2021 Z Lab Corporation All rights reserved.

16.

ヤフーの要件を満たす ヤフーの要件 • 1万5千アプリケーションを収容できること • 重要なアプリケーションを守れること ©2021 Z Lab Corporation All rights reserved.

17.

ヤフーの要件を満たす ヤフーの要件 • 1万5千アプリケーションを収容できること • 重要なアプリケーションを守れること ©2021 Z Lab Corporation All rights reserved.

18.

ヤフーの要件を満たす 1万5千アプリケーションに必要なワーカーノード数 • 1アプリケーションあたり10Podで合計15万Pod。 • 1ワーカーノードで起動できるPod数は100程度。(K8sの制約) 150,000 pod ÷ 100 pod/node = 1,500 node 1,500個のワーカーノードが必要 ©2021 Z Lab Corporation All rights reserved.

19.

ヤフーの要件を満たす 1万5千アプリケーションを収容のために • ZCPでは、1,500ワーカーノードの巨大なK8sクラスタを作れない。 • アプリケーション数は、今後も増える可能性がある。 • 複数の小さなK8sクラスタを使って、一つの大きな基盤を作る。 • 小さく扱いやすいK8sクラスタで、細かく容易にスケール。 • ZAPは、マルチK8sクラスタ構成。 ©2021 Z Lab Corporation All rights reserved.

20.

ヤフーの要件を満たす ZAPの構成(1) • FlagShipと呼ばれる一つのK8sクラ スタと、Shipと呼ばれる複数のK8s クラスタで構成。 • ZAPは、Shipを増やしていくことで スケール。 FlagShip Ship Ship Ship Ship 20

21.

ヤフーの要件を満たす ZAPの構成(2) FlagShip • ZAPのコントロールプレーン。 • Fleetという管理用コンポーネント が稼働。 Ship • ZAPのデータプレーン。 • アプリケーションが稼働。 FlagShip Fleet Ship アプリ アプリ Ship アプリ アプリ Ship アプリ アプリ Ship アプリ アプリ 21

22.

ヤフーの要件を満たす アプリケーションのデプロイの仕組み • ZAP利用者は、FlagShipにAppリ ソースを作成。 • Fleetは、Appリソースを元に適切 なShipにアプリケーションをデプ ロイ。 • 複数のK8sクラスタを、一つの大 きなアプリケーション実行基盤と して扱える。 FlagShip App1 App2 App3 ZAP 利用者 Fleet Ship1 アプリ1 アプリ3 Ship2 アプリ2 22

23.

ヤフーの要件を満たす アプリケーションへのアクセスの仕組み • アプリケーションのエンドポイント は、DNSに自動登録。 • アプリケーション利用者は、DNSを 参照してShipのロードバランサーに 直接アクセス。 • ZAP全体のトラフィックを複数の K8sクラスタに分散。 Ship1 アプリ1 アプリ3 Ship2 アプリ2 LB LB アプリ 利用者 DNS 23

24.

ヤフーの要件を満たす アプリケーションのデバッグの仕組み • デバッグは、Fleetを経由して実行。 • Fleetは、デバッグアクセスを適切なPod に中継。 • ZAP利用者は、Shipの存在を意識するこ となく、一つ一つのPodに対して、デ バッグコマンドを実行可能。 FlagShip Fleet flctl exec/attach/logs ZAP 利用者 Ship1 アプリ1 Pod1 Pod2 アプリ2 Ship2 24

25.

ヤフーの要件を満たす 課題:Shipをたくさん作るのは大変 • 100ノードのK8sクラスタを15個で、1,500ノードの基盤を実現。 • しかし、15個ものShipを手動で構築していくのは大変。 • ZAPでは、Shipを、カスタムリソースとして定義、Fleetで自動構築。 ©2021 Z Lab Corporation All rights reserved.

26.

ヤフーの要件を満たす Shipの自動構築の仕組み FlagShip Ship1 Ship2 Ship3 ZAP 管理者 Fleet Ship1 Ship2 Ship3 ZCP 26

27.

ヤフーの要件を満たす Fleetはオペレーター • Fleetは、Appリソースを元にアプリケーションをデプロイ。 • Fleetは、Shipリソースを元にK8sクラスタを構築。 • 定義を元に実体を作るソフトウェアを、オペレーターと呼ぶ。 • アプリケーションのデプロイやShipの構築を担当していた運用エンジ ニアが、ソフトウェアになったイメージ。 ©2021 Z Lab Corporation All rights reserved.

28.

ヤフーの要件を満たす ヤフーの要件 • 1万5千アプリケーションを収容できること • 重要なアプリケーションを守れること ©2021 Z Lab Corporation All rights reserved.

29.

ヤフーの要件を満たす 重要なアプリケーションを守るために • AZ障害などで、一部のShipでのシステムリソース逼迫を想定。 • 重要なアプリケーションに、優先してシステムリソースを使わせたい。 • ZAPでは、アプリケーションを別のShipに移動できる。 • アプリケーションの退避や退去により、システムリソースを確保。 ©2021 Z Lab Corporation All rights reserved.

30.

ヤフーの要件を満たす アプリケーションの移動の仕組み FlagShip App1 Ship1 ↓ Ship2 Fleet ZAP 管理者 Ship1 アプリ1 Ship2 アプリ1 LB LB アプリ 利用者 DNS アプリ1エンドポイント: Ship1 → Ship2 30

31.

✅ ヤフーの要件を満たす • 1万5千アプリケーションを収容できること • 重要なアプリケーションを守れること ©2021 Z Lab Corporation All rights reserved.

32.

まとめ:ZAPの特徴 ✅ ZCPの課題に応える • K8sクラスタの管理が大変 ▶ マルチテナントK8sをZAP側で管理 • YAMLの用意が大変 ▶ APPリソースからK8sのリソースを自動作成 • トラブルシューティングが難しい ▶ 熟練者のノウハウをコマンド化 ✅ ヤフーの要件を満たす • 1万5千アプリケーションを収容できる ▶ マルチK8sクラスタ構成 • 重要なアプリケーションを守れる ▶ アプリケーションのShip移動 ©2021 Z Lab Corporation All rights reserved.

33.

Yahoo! JAPAN Tech Conference 2021 ©2021 Z Lab Corporation All rights reserved.