1.4K Views
June 18, 20
スライド概要
KubeFest Tokyo 2020に登壇させていただきました。その際の資料となっております。
https://k8sjp.connpass.com/event/176105/
https://k8sjp.github.io/kubefest-2020/
—
ヤフーでは600以上のKubernetesクラスタ、それを構成する13000を超えるノードが存在しています(2020年5月時点)。この数多くのクラスタをZ Labが開発したKubernetes as a Serviceを使用して、20人程度の1つのチームで管理しています。
管理チームはクラスタを払い出して終了ではありません。600以上のクラスタ全てが正常に稼働しているか、状態を監視しています。 本セッションではKubernetesクラスタの監視・運用技術について、クラウドネイティブ時代の監視の基礎をお話し、ヤフーにおいて大量クラスタからいかに情報を集約し、少ないメンバーで安定稼働を実現しているかご紹介いたします。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
監視の基礎から知る、 ヤフーの大量クラスタ監視システムの仕組み 2020年6月16日 ヤフー株式会社 勝田 広樹 ヤフー株式会社 相良 幸範 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
このセッションについて はじめに、ヤフーのKubernetes as a Serviceをご紹介し、 Kubernetesクラスタの監視・運用について基礎を振り返り ます。 その後、ヤフーにおいて大量クラスタからいかに情報を集 約し、少ないメンバーで安定稼働を実現しているかご紹介 いたします。 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 2
アジェンダ 1. ヤフーのKubernetes 2. 大量クラスタを少人数で運用する仕組み 3. クラスタ監視 4. 大量クラスタ監視の集約 5. まとめ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 3
登壇者 相良 幸範 テクノロジーグループ システム統括本部 クラウドプ ラットフォーム本部 2008年にNTTデータに入社。R&D部署・全社の技術 集約部署でプライベートクラウド基盤ソフトの開発や、 OpenStackを使用した通信キャリア向け大規模プライ ベートクラウド基盤の設計・構築を実施。 2019年にヤフーに移り、ヤフーの本番サービスを支え るKubernetes基盤のSRE/CRE業務に従事 勝田 広樹 テクノロジーグループ システム統括本部 クラウドプ ラットフォーム本部 Kubernetes as a Serviceの保守運用をやってます ヤフー8年目 Kubernetes3年目 CKA, CKAD取得 趣味は旅行とカラオケ。最近は両方とも封じられてし まってます。。 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 4
1. ヤフーのKubernetes 2. 大量クラスタを少人数で運用する仕組み 3. クラスタ監視 4. 大量クラスタ監視の集約 5. まとめ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 5
ヤフーのKubernetes 3年間のクラスタ数推移 Kubernetesを本番利用し始めてから、クラスタ数は日に日に増加 680+ 400 50 5 2017/08 2018/07 2019/07 2020/05 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 6
ヤフーのKubernetes ヤフーのKubernetes利用の規模 利用チーム 210+ node 13000+ K8s Cluster Kubernetes 680+ Pod pod 120K+ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 7
ヤフーのKubernetes Kubernetes Clusterの構成 サービス開発者 サービス公開 Master LB Ingress LB Master Ingress etcd Worker Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 8
ヤフーのKubernetes ヤフーのKubernetes as a Service Kubernetes as a Serviceにより管理を自動化 Kubernetes as a Service OpenStack API Kubernetes Cluster Kubernetes Cluster Kubernetes Cluster Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 9
ヤフーのKubernetes ヤフーのKubernetes as a Service Z Labで開発し、ヤフーのKaaSチームで運用 Z Lab ヤフー KaaSチーム (SRE/CRE) ヤフー サービス開発チーム Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 10
ヤフーのKubernetes 詳しくはKubeCon China 2019の発表をご参照ください KubeCon China 2019 https://youtu.be/FqYN6ZACAnc Auto Operation of Hundreds of K8s Clusters in Yahoo Japan Corporation Hiroki Katsuta / 勝田広樹: Yahoo Japan Corporation Cheng Chen / 成臣: SBI BITS Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 11
ヤフーのKubernetes 3年間の変化 利用者の増加 → システムの大型化 稼働サービスの多様化 → サポート領域の拡大 影響は様々な階層に アプリケーション 開発者寄り container K8s Cluster KaaS machine 運用者寄り Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 12
ヤフーのKubernetes 直面してきた課題たち 開発者寄り アプリ ケーション container K8s Cluster KaaS/ machine 運用者寄り K8sの 知見 サポート範囲 の不毛な拡大 マイクロ サービス化 の弊害 大量ログ の集約 過剰なリソース要求 セキュ リティ ステー トフル 機能の 提供 Production 稼働当初 現在 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 13
ヤフーのKubernetes YJTC 2019 in Shibuya でもKaaSのUpdateをご紹介 Yahoo! JAPAN Tech Conference 2019 in Shibuya Kubernetes as a ServiceをProduction環境で 2年活用し、直面してきた課題と解決策 テクノロジーグループ システム統括本部 クラウドプラットフォーム本部 勝田広樹 Copyright© 2019 Yahoo Japan Corporation. All Rights Reserved. https://techblog.yahoo.co.jp/entry/20191213789272/ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 14
1. ヤフーのKubernetes 2. 大量クラスタを少人数で運用する仕組み 3. クラスタ監視 4. 大量クラスタ監視の集約 5. まとめ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 15
大量クラスタを少人数で運用する仕組み Kubernetes運用の全体像 Z Lab KaaSソフトウェア開発 新機能提供 新規要望 ヤフー KaaSチーム (SRE/CRE) インテグレーション ・ OpenStack ・ 認証・認可 ・ メトリクス監視 ・ ログ監視・分析 ・ トレース ・ セキュリティ ヤフー インフラ KaaSデプロイ k8s Clusterデプロイ k8s Cluster監視 k8sバージョンアップ 問い合わせ対応 問題調査 Kubernetes Cluster Kubernetes Cluster Kubernetes Cluster 高信頼化 k8s Cluster を支える共通基盤 APPデプロイ 監視 スケールアウト スケールイン k8sバージョンアップ ヤフー サービス開発 チーム → サービスを効率的に運用するには・・ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 16
大量クラスタを少人数で運用する仕組み 大量クラスタの運用自動化 様々な運用自動化で大量のKubernetesクラスタを効率的に運用 今回はデプロイに関わる自動化を紹介 1. CIOps/GitOpsによる運用自動化 KaaSチームによる、Kubernetes as a Serviceのデプロイなど 2. Kubernetes as a Serviceによる運用自動化 Kubernetes as a Serviceを利用したKubernetesクラスタのデプロイ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 17
大量クラスタを少人数で運用する仕組み > 大量クラスタの運用自動化 1. CIOps/GitOpsによる運用自動化 KaaSのデプロイ作業 KaaSチーム 作業者 バージョン管理された KaaSの構成ファイル (基盤状態や変更差分を可視化) GitHub 構成ファイルの レビュー KaaSチーム CI/CD Pullリクエストがマージされ ると自動でデプロイ開始 KaaS KaaS KaaS KaaS Kubernetes Cluster : Kubernetes Cluster 複数のNWごとに存在する KaaSをアップデート 最新のKubernetesや 周辺系ソフトウェアを配布 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 18
大量クラスタを少人数で運用する仕組み > 大量クラスタの運用自動化 2. Kubernetes as a Serviceによる運用自動化 Z Labが開発したKaaSで Kubernetesクラスタを自動でデプロイ ・ KaaS は Kubernetesをフレームワークとして使用 (Custom Resource Definitionの仕組み) ・ インフラ構築作業を自動化 KaaSチーム サービス開発 チーム ・ k8sクラスタデプロイ ・ スケールアウト ・ スケールイン ・ k8sバージョンアップ KaaS 構成情報 Custom Resource LBリソース K8s クラスタ リソース マシン デプロイメント リソース マシンリソース Reconciliation loop Kubernetes クラスタ ・ LB設定 ・ K8s クラスタ設定 ・ ノード数管理 ・ OpenStack VM管理 構築後も健全性を確認し続けるため、スケールアウト・インやKubernetesバージョンアップ時のローリングアップデート、 ハイパーバイザ故障時のセルフヒーリングも自動で実現 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 19
1. ヤフーのKubernetes 2. 大量クラスタを少人数で運用する仕組み 3. クラスタ監視 4. 大量クラスタ監視の集約 5. まとめ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 20
クラスタ監視 KaaSチームでの監視について アプリケーション container K8s Cluster KaaS machine サービス開発者 KaaSチーム Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 21
クラスタ監視 KaaSチームが正常動作を担保 ・ Kubernetesクラスタを払い出して終 わりではない ・ クラスタが正常稼働しているか ・ デフォルト提供のアドオンが正常稼働し ているか Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 22
クラスタ監視 クラウドネイティブな環境の監視 オブザーバビリティ(可観測性)の3本柱 メトリクス 定量的な状態把握 -> アラーティング ・ リソース利用状況の把握 ・ e2e監視によるサービスの健全性確認 ・ RED Method(Rate, Error Rate, Duration) コンポーネント間の問題把握 リクエスト単位での 処理時間確認 トレース ログ 障害時の分析・検索 (メッセージ監視はメトリクス化する) Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 23
クラスタ監視 クラウドネイティブな環境の監視 オブザーバビリティ(可観測性)の3本柱 Prometheus メトリクス 定量的な状態把握 -> アラーティング ・ リソース利用状況の把握 ・ e2e監視によるサービスの健全性確認 ・ RED Method(Rate, Error Rate, Duration) コンポーネント間の問題把握 リクエスト単位での 処理時間確認 トレース ログ 障害時の分析・検索 (メッセージ監視はメトリクス化する) PrometheusはThe Linux Foundation の登録商標です Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 24
クラスタ監視 なぜメトリクス監視なのか ・ 保存データ量が少量で済む ・ 状態の推移が確認可能 ・ ログ, トレースは詳細調査の際に使用 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 25
クラスタ監視 監視について ・ まずは単体のK8sクラスタ監視について KubernetesはThe Linux Foundation の登録商標です Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 26
クラスタ監視 Prometheusを使った監視 ・ exporterで監視対象のメトリクス を収集 ・ node_exporter ・ blackbox_exporter など ・ Prometheusで監視 Prometheus PrometheusはThe Linux Foundation の登録商標です Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 27
クラスタ監視 Prometheusを使った監視 ・ クラスタが正常稼働しているか ・ クラスタリソース ・ node状態 ・ etcdメンバ ・ アドオンが正常稼働しているか ・ 対象podの稼働状態 ・ ingressとの疎通 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 28
1. ヤフーのKubernetes 2. 大量クラスタを少人数で運用する仕組み 3. クラスタ監視 4. 大量クラスタ監視の集約 5. まとめ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 29
大量クラスタ監視の集約 大量クラスタ監視 ・ 次に大量クラスタ監視について … 680+ KubernetesはThe Linux Foundation の登録商標です Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 30
大量クラスタ監視の集約 大量クラスタの監視 ・ 個々のクラスタそれぞれは見られない KaaSチーム Kubernetes Cluster Kubernetes Cluster Kubernetes Cluster 各クラスタ 利用者 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 31
大量クラスタ監視の集約 集約の仕組み KaaS 集約システム データ永続化 クラスタリストの取得 メトリクスデータ収集 アラーティング Kubernetes Cluster Kubernetes Cluster Kubernetes Cluster Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 32
大量クラスタ監視の集約 集約データ ・ メトリクス収集でもデータ量が多い ・ データの保存期間が短くなる ・ 収集対象データを増やしづらい ⇒ 基本はアラートメトリクスのみを収集 + 運用改善に必要なデータ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 33
大量クラスタ監視の集約 各クラスタの状態確認サンプル 現時点での値 (参考値) **Current** Status cluster Num Worker CPU (worker) CPU Req Pod/Node CPU Usage (worker) RAM (worker) RAM Req Pod/Node RAM Usage (worker) 200.00 3200 97.28% 6.45% 12.29 TiB 9.17% 3.34% 145.00 1740 77.04% 3.81% 17.83 TiB 77.97% 18.38% 62.00 1488 40.77% 5.34% 1.43 TiB 52.16% 19.89% 50.00 800 62.37% 0.51% 3.07 TiB 6.26% 7.45% 40.00 480 77.96% 4.52% 4.92 TiB 76.87% 20.81% 40.00 480 77.96% 4.69% 4.92 TiB 76.87% 20.76% 50.00 400 28.57% 5.20% 783.25 GiB 30.48% 25.99% 8.00 192 30.89% 1.02% 188.29 GiB 35.94% 37.38% 選択した時間での値 resouce usage: Num Nodes Num CPU(worker) CPU Avg Usage(worker) CPU Max Usage(worker) CPU Req pod/node(worker) Disk Usage(worker) Received Max bps (ingress) Received packets ps (ingress) 6 8 3.896% 4.072% 21.29% 8.303% 124 kbps 301 pps Num Worker Num RAM(worker) RAM Avg Usage(worker) RAM Max Usage(worker) RAM Req pod/node(worker) Transmit Max bps (ingress) Transmit packets ps (ingress) 2 7.706 GiB 45.62% 45.70% 75.69% 98.7 kbps 208 pps Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 34
大量クラスタ監視の集約 集約したメリット ・ 全クラスタを1箇所で確認 ・ 永続化用ストレージを1箇所に ・ 付属のメリット ・ クラスタ全体の情報収集が行やすく Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 35
1. ヤフーのKubernetes 2. 大量クラスタを少人数で運用する仕組み 3. クラスタ監視 4. 大量クラスタ監視の集約 5. まとめ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 36
まとめ ・ KaaSを使って運用自動化 ・ メトリクス, ログ, トレースを使って可観 測性を高める ・ メトリクスを集約し、最小限のコストで 全クラスタの稼働状態を監視 ・ 管理者チームが全体を俯瞰することによ る全体最適化 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 37