Slide 1

Slide 1 text

© LY Corporation Kubernetesって何? LINEヤフー株式会社 SIグループクラウド統括本部Cloud Native本部 Shuichi Inoue Yudai Tonoyama Kubernetesを大規模に運用する Kubernetes as a Serviceチームの話を添えて

Slide 2

Slide 2 text

© LY Corporation 井上 秀一 / Shuichi Inoue Hideichi LINEヤフー株式会社 SIグループクラウド統括本部 Cloud Native本部 # 経歴 2024年4月〜 LINEヤフー株式会社 新卒入社 2024年7月〜 Kubernetes as a ServiceチームでOJT中 # 趣味 雑談 / ドライブ / 洋画&ドラマ / 自宅サーバ # 一言 KubernetesやSREに興味があります © LY Corporation 2

Slide 3

Slide 3 text

© LY Corporation 3 殿山 雄大 / Yudai Tonoyama / トムヤムクン LINEヤフー株式会社 SIグループクラウド統括本部 Cloud Native本部 # 経歴 2024年4月〜 LINEヤフー株式会社 新卒入社 2024年7月〜 Kubernetes as a ServiceチームでOJT中 # 趣味 焚き火 / アニメ / 自宅サーバ # 一言 お刺身(OpenStack VM)の上にたんぽぽ (Kubernetes)を載せる仕事をしています © LY Corporation

Slide 4

Slide 4 text

© LY Corporation LINEヤフーについて 4

Slide 5

Slide 5 text

© LY Corporation 数字で見るLINEヤフー 5 ※1:Yahoo! JAPAN月間ログインユーザーID数、LINE月間アクティブユーザー数(MAU)、PayPay登録ユーザー数、ZOZOTOWN事業年間購入者数(Yahoo!ショッピング含まず)の合算(全て2024年3月末時点) ※2:2024年3月期 ※3:2023年8月時点 ※4:2024年3月時点 ※5:2024年3月時点の連結子会社数 LINEヤフー株式会社「数字で見るLINEヤフー」https://www.lycorp.co.jp/ja/company/ より引用 (2024年9月9日閲覧)

Slide 6

Slide 6 text

© LY Corporation Agenda 01 Kubernetes(K8s)とは 02 ZCPについて 03 KaaSとしてZCPを運用している上で 直面した課題 04 まとめ 6

Slide 7

Slide 7 text

© LY Corporation 皆さんは、アプリやシステムを公開するとき に顧客への影響まで考慮していますか? 【質問】 7 顧客に「サービス止まりました。ごめんなさい」だけでは済まない。 ビジネス上の損失が発生してしまう...。

Slide 8

Slide 8 text

© LY Corporation 「単独」の計算機環境 「複数」の計算機環境 1台使えなくなっても他のサーバで耐えることができる 8 複数台で障害や負荷に耐える

Slide 9

Slide 9 text

© LY Corporation 耐障害性と負荷分散を実現する選択肢... 9 それが...「Kubernetes (K8s)」

Slide 10

Slide 10 text

© LY Corporation Kubernetes(K8s)とは 10

Slide 11

Slide 11 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 11 全体像:

Slide 12

Slide 12 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 12 誰もが最初にやるデプロイ方法: OS上で直接動かす! 環境依存: ホストOS, CPUアーキテクチャ次第 メンテナンスコスト: OSや他Appのpkgアップデート 依存関係: App同士の依存関係管理 ポータビリティ: お引越しや移動が困難 性能: オーバヘッドがない

Slide 13

Slide 13 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 13 仮想マシン(VM)ならどうだろうか? 環境依存: VMのOSを選択 ポータビリティ: VM毎可搬はできる 依存関係: App同士の依存関係が切り離せる リソース柔軟性が低い: リソースの変更が大変 性能: OSの二重化によるオーバーヘッド 要件次第では全然あり Ex) Linux Kernelを分離できる

Slide 14

Slide 14 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 14 Containerならどうだろうか? 環境依存: Containerのベースのイメージを選択 ポータビリティ: Container imageとして公開 依存関係: Container単位で隔離 メンテナンスコスト: Container内だけ考えれば良い オーバーヘッド: Linuxの仕組みを利用しているので最小限

Slide 15

Slide 15 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 15 耐障害性・負荷分散を考慮すると...

Slide 16

Slide 16 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 16 Kubernetesを導入すると...?

Slide 17

Slide 17 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 17 Kubernetesを導入すると...? Kubernetes Cluster 複数計算機上のコンテナを管理

Slide 18

Slide 18 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 18

Slide 19

Slide 19 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 19 Kubernetesを導入すると...? コンテナはPodという単位で管理 Podには複数のコンテナが入る

Slide 20

Slide 20 text

© LY Corporation K8sの前に「Container(コンテナ)」を理解する 20 Kubernetesを導入すると...? Kubernetesを介して コンテナをデプロイ Ex) • Cluster上でPod 6個 • 計算機1にはPod 2個 • 計算機2にはPod 3個 • 計算機3にはPod 1個 みたいなこともできる

Slide 21

Slide 21 text

© LY Corporation 21 「Kubernetes」の 宣言的管理 Kubernetesは、「マニフェスト」と呼ばれる設定ファイルを使 いコンテナを作成し、アプリケーションをデプロイする 例えば、Kubernetesクラスターで同じコンテナを3つ作りたい場 合は、replicas: 3とyamlに書き適用することで 実際に3つの「Pod」が作成される © LY Corporation

Slide 22

Slide 22 text

© LY Corporation Internal Use Only 22 Kubernetesについて理解できましたね? では...「運用」してみよう!

Slide 23

Slide 23 text

© LY Corporation Kubernetesの運用では様々な面を考 慮しないといけない... 23 • バージョンアップデート • モニタリング・ロギング • セキュリティ • リソース管理…etc アプリ開発者が、Kubernetesを詳しく調べる時間はない... どうすればいいのか...

Slide 24

Slide 24 text

© LY Corporation そこで! Kubernetes as a Service(KaaS) 24 「KaaS」とは、アプリ開発者が簡単かつ迅速にKubernetesを使い、 デプロイできるプラットフォームのこと。 Amazon EKS(Elastic Kubernetes Service) GKE(Google Kubernetes Engine) AKS(Azure Kubernetes Service)など パブリッククラウドでいうところのKaaSは... K8sの運用を丸投げ メリットだけ享受 札束とトレードオフ

Slide 25

Slide 25 text

© LY Corporation 元ヤフーのKaaS ZCP 25 元LINEのKaaS VKS LINEヤフーにある2つのKaaS 今回は、ZCPのKaaSの運用について説明!

Slide 26

Slide 26 text

© LY Corporation ZCPについて 26

Slide 27

Slide 27 text

© LY Corporation 27 ZCP(ZLab Container Platform)とは • 開発者の高い生産性のためセキュアで運用が簡単な k8s クラスタを提供 • 確保されたセキュリティ(監査、脆弱性対応) • SREのプラクティスを簡単に実現 (o11y、アラーティング、運用自動化) 全社のサービスが利用する極めて重要なプラットフォーム 弊社のプライベート K8s as a Service(KaaS) 99.99 プラットフォームの稼働率 %

Slide 28

Slide 28 text

© LY Corporation 良いところ 大変なところ 28 ZCPチームの良いところと大変なところ 元Yahoo! JAPANのKaaSチーム。「LINEヤフーが世界の変化に爆速で適応できる」が理念。 Kubernetesプラットフォームの 開発、運用を経験できる 巨大なプラットフォームを運用するため の知見を得られる アラート担当のときにアラートが発生し たときは対応する必要がある KubernetesとGo言語の深い知識が必要

Slide 29

Slide 29 text

© LY Corporation Containers 996,000+ Kubernetes Clusters 1,400+ VMs 57,000+ 29 ZCPの規模感 LINEヤフー全体では、2,400+以上のKubernetes Clusterを運用

Slide 30

Slide 30 text

© LY Corporation そもそもZCPって何...? 30 KubernetesがKubernetesを管理している

Slide 31

Slide 31 text

© LY Corporation そもそもZCPって何...? 31 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト

Slide 32

Slide 32 text

© LY Corporation そもそもZCPって何...? 32 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト User Pod User Pod User Pod

Slide 33

Slide 33 text

© LY Corporation そもそもZCPって何...? 33 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト User Pod User Pod Admin Pod Admin Pod Admin Pod User Pod

Slide 34

Slide 34 text

© LY Corporation そもそもZCPって何...? 34 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト Cluster (子)のマニフェストがある

Slide 35

Slide 35 text

© LY Corporation そもそもZCPって何...? 35 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト Cluster (子)のマニフェストがある - Kubernetesのバージョン - 監視や認証認可用のPod

Slide 36

Slide 36 text

© LY Corporation そもそもZCPって何...? 36 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト Cluster (子)のマニフェストがある - Kubernetesのバージョン - 監視や認証認可用のPodなど

Slide 37

Slide 37 text

© LY Corporation そもそもZCPって何...? 37 KubernetesがKubernetesを管理している ZCPチーム 顧客 チーム プロダクト Cluster (子)のマニフェストがある Cluster (子)に反映される - Kubernetesのバージョン - 監視や認証認可用のPodなど

Slide 38

Slide 38 text

© LY Corporation KaaSとしてZCPを 運用している上で直面した課題 38

Slide 39

Slide 39 text

© LY Corporation 定型作業 不定期発生 アラート 10件 ZCP アラート総数 93件 39 KaaSとしてZCPを運用している上で直面した課題

Slide 40

Slide 40 text

© LY Corporation 定型作業&不定期発生のアラートとは 41 → リソース不足起因のアラート CPUやメモリのリソース不足で新規Podが立ち上がらない問題 ノードを増やすなどするだけで解決する

Slide 41

Slide 41 text

© LY Corporation アラートと定型作業の流れ 42 社内エンジニア

Slide 42

Slide 42 text

© LY Corporation アラートと定型作業の流れ 43 ZCPはK8sの運用を担う Update Monitoring Security etc..

Slide 43

Slide 43 text

© LY Corporation アラートと定型作業の流れ 44 顧客自身のPod負荷に応じた ノード数の管理を依頼している 1400クラスタの負荷管理は ZCPチームが爆発する

Slide 44

Slide 44 text

© LY Corporation 45 しかし、負荷を確認せずにPodを 大量に載せる利用者もいる アラートと定型作業の流れ

Slide 45

Slide 45 text

© LY Corporation アラートと定型作業の流れ 46

Slide 46

Slide 46 text

© LY Corporation アラートと定型作業の流れ 47

Slide 47

Slide 47 text

© LY Corporation アラートと定型作業の流れ 48

Slide 48

Slide 48 text

© LY Corporation アラートと定型作業の流れ 49

Slide 49

Slide 49 text

© LY Corporation アラートと定型作業の流れ 50

Slide 50

Slide 50 text

© LY Corporation アラートと定型作業の流れ 51

Slide 51

Slide 51 text

© LY Corporation アラートと定型作業の流れ 52 スケールアップ

Slide 52

Slide 52 text

© LY Corporation アラートと定型作業の流れ 53

Slide 53

Slide 53 text

© LY Corporation アラートと定型作業の流れ 54

Slide 54

Slide 54 text

© LY Corporation アラートと定型作業の流れ 55 顧客連絡

Slide 55

Slide 55 text

© LY Corporation アラートと定型作業の流れ 56

Slide 56

Slide 56 text

© LY Corporation このアラートの辛いところ&定型作業なアラートの辛 いところ 57 過去3ヶ月間で全アラート93件中、10件起きている 1件 平均27.5時間 合計約275時間対応に取られている ※AlertのOpenからCloseまでの所要時間 自動化する

Slide 57

Slide 57 text

© LY Corporation 自動化の流れ 60 • 異常なPod情報の抽出 • スケール: 元々あるのを良い感じに流用 • 顧客連絡: 利用者情報取得&メール送付 • アラートを自動で閉じる 単純なリソース不足起因の場合、 ノード数を増やす(スケールアップ)だけで全て解決!

Slide 58

Slide 58 text

© LY Corporation 自動化した後の流れ 61 自動化のフローを実装

Slide 59

Slide 59 text

© LY Corporation 自動化した後の流れ 62 ※ZCPチームがやることは赤枠

Slide 60

Slide 60 text

© LY Corporation 自動化した後の流れ 63

Slide 61

Slide 61 text

© LY Corporation 自動化した後の流れ 64

Slide 62

Slide 62 text

© LY Corporation 自動化した後の流れ 65

Slide 63

Slide 63 text

© LY Corporation 自動化した後の流れ 66

Slide 64

Slide 64 text

© LY Corporation 自動化した後の流れ 67

Slide 65

Slide 65 text

© LY Corporation 自動化した後の流れ 68

Slide 66

Slide 66 text

© LY Corporation 自動化した後の流れ 69

Slide 67

Slide 67 text

© LY Corporation 自動化した後の流れ 70

Slide 68

Slide 68 text

© LY Corporation 自動化した後の流れ 71

Slide 69

Slide 69 text

© LY Corporation 27.5時間 Before 約3週間かけて開発 1件 約6分程度で終わるように自動化された 72 アラート対応自動化の開発期間 6分(実測値) After

Slide 70

Slide 70 text

© LY Corporation まとめ 73

Slide 71

Slide 71 text

© LY Corporation まとめ 74 Kubernetesは最強のインフラ基盤だが、運用は大変… Kubernetesをセキュアで、運用が簡単になるように提供する精鋭集団、 「KaaS部」 ZCPチームでは、LINEヤフーが世界の変化に爆速で適応できる プラットフォームを提供し続けています

Slide 72

Slide 72 text

© LY Corporation ご清聴ありがとうございました 75

Slide 73

Slide 73 text

© LY Corporation 補足: オートスケール&完全自動化しないの? 76 結論: できるが、そこまで大きなメリットがない - 完全な自動化 - やろうとすると2ヶ月くらいかかる - 実装・運用するコストとメリットが微妙 - オートスケール - 新たな運用上の課題の懸念(スケールインする際など) - 失敗した際の無限スケール -> 全社に影響出る可能性あり 2ヶ月かけて27時間->0分にするか or 3週間で27時間->6分 現在やるべき課題と相談しつつ・割ける工数と相談した結果

Slide 74

Slide 74 text

© LY Corporation