Kubernetesって何? -大規模なKubernetesを運用するKubernetes as a Serviceチームの話を添えて-
by
LINEヤフーTech (LY Corporation Tech)
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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