Kubernetesって何? -大規模なKubernetesを運用するKubernetes as a Serviceチームの話を添えて-
by
LINEヤフーTech (LY Corporation Tech)
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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