Upgrade to Pro — share decks privately, control downloads, hide ads and more …

k8s(EKS)でマルチテナントプラットフォームを運用する際のコスト按分の実装 / 25012...

OPTiM
March 13, 2025

k8s(EKS)でマルチテナントプラットフォームを運用する際のコスト按分の実装 / 250124_LT_SRE

OPTiM

March 13, 2025
Tweet

More Decks by OPTiM

Other Decks in Technology

Transcript

  1. © 2019-2025 OPTiM Corp. All rights reserved. 2 自己紹介 

    職歴 ◼ 2023年4月: オプティム 総合職(ポテンシャル職 = 非エンジニア) 入社 ◼ 2023年4~7月: ITポテンシャル研修 ◼ 2023年7月: プラットフォーム開発ユニットPlatform Engineeringチーム配属  仕事内容 ◼ 社内向けプラットフォーム開発 ◼ MOYT(もっとおやつ会)幹事  技術キーワード ◼ 「AWS」,「Terraform」,「Kubernetes」,「Docker」など
  2. © 2019-2025 OPTiM Corp. All rights reserved. 3  プロダクトチームがプロダクト固有の問題解決にフォーカスできるよ

    うにプラットフォームを提供する  活動の一環として、複数のプロダクトが利用できるマルチテナント構 成の社内プラットフォームをKubernetes as a Serviceとして提供  マルチテナントプラットフォームの利点 ✓ 自プロダクトのリソースをプロダクトチーム自ら管理することで、インフラ チームが開発速度を減少させるゲートキーパーとなることを防ぐ ✓ プラットフォームチームが常にメンテナンスする安心、安全な基盤を複数プ ロダクトで共有できる ✓ スケーラブルな基盤を提供することで、プロダクトは自分たちが利用した以 上に無駄なコストを支払う必要がない Platform Engineeringチームの取り組み 提供するマルチテナントプラットフォーム略図
  3. © 2019-2025 OPTiM Corp. All rights reserved. 4 課題: プロダクトが使用した分だけコストを請求されるように、コスト按分を行うこと

    リソース占有部分 + リソース共有部分の両者で テナントに平等なコスト按分を 行う必要がある 共通利用 共通利用 共通利用 課題: オプティムは多数のサービスを提供しているため、 リソースを共有しているプラットフォームであっても、 乗り入れした各テナント(≒サービス)ごとの原価を適切に把握できるようにする必要がある 難点: テナントがリソースを共有しているため、 AWSのサービスで請求書を分けることができない
  4. © 2019-2025 OPTiM Corp. All rights reserved. 5 解決案: EKSのネームスペースごとのCPU,メモリリクエストに応じて

    アカウントのコストを按分する 現状のコスト按分比率 プロダクトAの料金 =(namespaceA)/(namespaceA + namespaceB) × 全体の料金 プロダクトBの料金 =(namespaceA)/(namespaceA + namespaceB) × 全体の料金
  5. © 2019-2025 OPTiM Corp. All rights reserved. 6  OpenCost

    ◼ Kubernetes およびクラウドネイティブ環境向けに開発されたオープンソースのコスト監視ソリューション ◼ 無料利用可能  kubecost ◼ Kubernetes 環境向けの包括的なコスト割り当ておよびリソース監視ソリューション ◼ 割引、スポットインスタンス、リザーブドインスタンスなどの高度なコスト調整が可能 ◼ 一部機能は無料利用可能  AWS CUR の Split Cost Allocation Data for Amazon EKSの利用 ◼ AWS の使用状況を追跡しアカウントに関連する推定請求額をS3に出力する ◼ レポートの出力自体は無料で使用できるものもあるが、出力先のS3には課金される ◼ 請求書を受け取るAWSアカウントのBilling and Cost Managementから有効化 ネームスペースごとのコストを計測する手段の検討 今回は導入が簡単だった CURを導入してみました
  6. © 2019-2025 OPTiM Corp. All rights reserved. 7 解決策: AWS

    CURを使用しnamespaceごとの按分比率測定 CURでSplit Cost Allocation Data for Amazon EKSを設定し、 pod単位の使用情報を取得 S3にcsvファイルで出力
  7. © 2019-2025 OPTiM Corp. All rights reserved. 9 今後の課題: 

    EKSのnamespaceごとのリソース”使用率”に応じた按分を行いたい ◼現状: EKSのnamespaceのリソースリクエストに応じた按分を行っている ◼解決案: 当初検討していたKubecostをCURの代わりに使用することや、Amazon Managed Service for Prometheus をCURに導入することでリソースの使用率の値を取得することが可能  ALB, NatGW, InternetGWなど、リソースの課金形態に合わせた按分比率を算出したい ◼現状: EKSの按分比率をAWSアカウント全体のコストにかけている ◼解決案: 転送したデータ量などのパラメータを取得して計算スクリプトを追加する  コスト按分比率算出が自動実行される仕組みを作りたい ◼現状: PEチームのローカル環境でコンテナを立ててスクリプトを実行している ◼解決案: Cronjobで自動実行するなど オプティムでは 一緒に働く仲間を 募集しています