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

Kubernetesでやる省エネスケジューリング / Kubernetes Meetup To...

Kubernetesでやる省エネスケジューリング / Kubernetes Meetup Tokyo #66

Shunsuke Ise

August 07, 2024
Tweet

Other Decks in Programming

Transcript

  1. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 経歴 ◼ 2017~2022 某SI企業 ◆ お客様の企業ネットワークを SDN / SD-WANでイイ感じにする仕事 ◼ 2022~現在 株式会社ビットメディア ◆ ワークロードシフトによる再エネ活用 / 電力需給制御を Kubernetesで実現する「SmartPowerプラットフォーム」開発中 ◆ ワークロードの配置最適化によるデータセンタの省エネを Kubernetesで実現するプロジェクト 自己紹介:伊勢 駿介 / Shunsuke Ise 2 ワークロードシフト: "エネルギーとデジタルのインフラ融合がエネルギー課題を解決に導く" https://www.telegraphic.jp/2024/05/642/ 地上波デビュー(N年前) 家で飼っているKubernetesクラスタ 本日のテーマ
  2. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. ① 背景と提案手法 ② Kubernetesにおける実装 ③ 課題と展望 本発表の内容 3
  3. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. この成果は、国立研究開発法人新エネルギー・産業技術総合開発機構(NEDO)の助成事業 (JPNP21005)によって得られたものです。 ◼ プロジェクト:脱炭素社会実現に向けた省エネルギー技術の研究開発・社会実装促進プログラム ◼ テーマ:分散配置コンピューティングシステムの負荷の最適配置を可能とする運用技術の開発 ◼ 助成事業者: Neutrix Cloud Japan株式会社、日本電気株式会社、篠原電機株式会社、株式会社ビットメディア ◼ 共同研究先:国立大学法人大阪大学 謝辞 4
  4. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. ① 背景と提案手法 5
  5. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 背景 ◼ コンピューティングシステムの消費電力急増への対処は社会的課題 ◆ データセンタの消費電力は今後10年で15倍に ◆ 従来の省エネ技術は機器単体やPUE改善に着目 提案手法 ◼ 分散システムでの省エネを目的とした サーバの電力消費特性に基づくワークロード最適配置手法「WAO」を提案[1] ◆ ワークロードによるサーバの消費電力の増加量が 一定でないことを利用し、システム全体で省エネとなるように配置 ◼ KubernetesでWAOを使うための仕組みを実装 ◆ Kubernetesの拡張機構を活用し、WAOを用いたPodのスケジューリングを実装 背景と提案手法 6 [1] Ying-Feng Hsu et al., "Sustainable Data Center Energy Management through Server Workload Allocation Optimization and HVAC System", IEEE Cloud Summit 2024, Washington DC, USA, 2024. Workload Allocation Optimization 本日のテーマ
  6. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. WAOの詳細 ◼ CPU使用率とサーバ消費電力との関係 ◆ CPU使用率があがると消費電力は一気に増えるが、 ある程度のところでサチる ◆ 電力的におトクな配置先が存在 ◼ ワークロードの省エネ配置を行うには ◆ ワークロードの消費電力 = 消費電力 配置後 ― 消費電力 配置前 ◆ 消費電力が一番少ないサーバに配置する! ◆ 消費電力 配置後 は予測が必要 ◼ 設置環境に依存しないサーバ消費電力予測モデル ◆ 入力: CPU使用率 (%), 吸気温度 (℃), サーバ前後の静圧差 (Pa) ◆ 出力: 消費電力 (W) ◆ 静圧差をパラメータに含めることで どのデータセンタでも使える汎用的なモデルに 実験環境@篠原電機㈱ 御幣島サテライトラボ 背景と提案手法 7 ⚫ ラックにセンサを設置 ⚫ サーバごとの静圧差を 取得できるAPIを用意 E ELinear Intel® Xeon® Gold 搭載サーバの消費電力
  7. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. ② Kubernetesにおける実装 8
  8. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. WAOによる省エネ配置をKubernetes Schedulerに適用する ◼ kube-scheduler ◆ PodをどのNodeで実行するかを決定 ◆ Scheduling Frameworkに沿って動作 ➢ プラグインによる拡張が可能 ◼ WAOをどう実装するか ◆ Podの配置による電力消費が少ないNodeを選ぶと省エネ! ◆ Scoreプラグイン(スコアでNodeを順位付け) ➢ 消費電力増加量の少なさをスコアとする ◆ メトリクスや推論結果を取得する機能が必要 ➢ Podの想定CPU使用率: マニフェストに書いてある ➢ 吸気温度: IPMIやRedfishで取得可能 ➢ etc. Kubernetesにおける実装 9 Scheduling Framework: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/ ⚫ 複数のフェーズと対応する インタフェースを定義 ⚫ プラグインはインタフェー スを満たすように実装 spec: containers: - name: app resources: requests: cpu: 500m memory: 256Mi 想定CPU使用率
  9. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 全体構成 ◼ 設定管理 ◆ カスタムリソース ◼ メトリクス収集 ◆ カスタムメトリクス ◼ スケジューリング ◆ スケジューラプラグイン Kubernetesにおける実装 10 Kubernetes Cluster Control Plane Node Config Metrics Server WAO Metrics Adapter 推論サーバ NodeConfig Template Node WAO Scheduler WAO Client Nodeの静圧差を取得 センサのデータを集約 Nodeの消費電力予測値を取得 テンプレートを適用する カスタムコントローラ 標準のメトリクスを提供 メトリクス取得と推論を行う キャッシュ付きのクライアント 対応する物理サーバ Node Config Node Node Config Node 消費電力 モデル メトリクス取得 Redfish or IPMI経由で Nodeの吸気温度を取得 WAO用のメトリクスを提供する Custom Metrics Adapter 差圧API WAO Controller NodeのWAOに関する設定を 管理するカスタムリソース
  10. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 全体構成 ◼ 設定管理 ◆ カスタムリソース ◼ メトリクス収集 ◆ カスタムメトリクス ◼ スケジューリング ◆ スケジューラプラグイン Kubernetesにおける実装 11 Kubernetes Cluster Control Plane Node Config Metrics Server WAO Metrics Adapter 推論サーバ NodeConfig Template Node WAO Scheduler WAO Client Nodeの静圧差を取得 センサのデータを集約 Nodeの消費電力予測値を取得 テンプレートを適用する カスタムコントローラ 標準のメトリクスを提供 メトリクス取得と推論を行う キャッシュ付きのクライアント 対応する物理サーバ Node Config Node Node Config Node 消費電力 モデル メトリクス取得 Redfish or IPMI経由で Nodeの吸気温度を取得 WAO用のメトリクスを提供する Custom Metrics Adapter 差圧API WAO Controller NodeのWAOに関する設定を 管理するカスタムリソース
  11. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 設定管理 ◼ Nodeごとに設定がある ◆ 吸気温度の取得方法 ◆ 静圧差の取得方法 ◆ 消費電力の予測方法 ◼ 設定管理用カスタムリソース ◆ NodeConfigTemplate ◆ NodeConfig(Nodeに対応) ◼ Kubebuilderで実装 ◆ Kubernetes APIを作るためのSDK ◆ GoのコードからCRDとコントローラの ボイラープレートを生成 Kubernetesにおける実装 12 WAO Core Components: https://github.com/waok8s/wao-core Kubebuilder: https://github.com/kubernetes-sigs/kubebuilder apiVersion: waok8s.github.com/v1beta1 kind: NodeConfigTemplate metadata: name: rack-01 namespace: wao-system spec: nodeSelector: matchLabels: rack: rack-01 template: nodeName: "" # set by the controller metricsCollector: inletTemp: type: Redfish endpoint: "https://10.0.1.{{.IPv4.Octet4}}" basicAuthSecret: name: "redfish-basicauth-{{.Hostname}}" fetchInterval: 10s deltaP: type: DifferentialPressureAPI endpoint: "http://10.0.0.2" fetchInterval: 10s predictor: powerConsumption: type: V2InferenceProtocol endpoint: "http://10.0.0.1/v2/models/HOGE/infer" 吸気温度はRedfishで取得 静圧差は差圧APIで取得 推論サービスのエンドポイント ← Go template の文法を採用 NodeConfig生成対象の Nodeをラベルで指定
  12. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 全体構成 ◼ 設定管理 ◆ カスタムリソース ◼ メトリクス収集 ◆ カスタムメトリクス ◼ スケジューリング ◆ スケジューラプラグイン Kubernetesにおける実装 13 Kubernetes Cluster Control Plane Node Config Metrics Server WAO Metrics Adapter 推論サーバ NodeConfig Template Node WAO Scheduler WAO Client Nodeの静圧差を取得 センサのデータを集約 Nodeの消費電力予測値を取得 テンプレートを適用する カスタムコントローラ 標準のメトリクスを提供 メトリクス取得と推論を行う キャッシュ付きのクライアント 対応する物理サーバ Node Config Node Node Config Node 消費電力 モデル メトリクス取得 Redfish or IPMI経由で Nodeの吸気温度を取得 WAO用のメトリクスを提供する Custom Metrics Adapter 差圧API WAO Controller NodeのWAOに関する設定を 管理するカスタムリソース
  13. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. メトリクス収集 ◼ Metrics API ◆ Resource Metrics API ➢ metrics-serverなど ◆ Custom Metrics API ➢ Kubernetesリソースに対する任意のメトリクスを実装できる ◼ WAO Metrics Adapter ◆ Nodeの吸気温度 inlet_temp と静圧差 delta_p を提供 ◆ NodeConfigで指定されたクライアントを使って収集 ◼ kubernetes-sigs/custom-metrics-apiserverで実装 ◆ カスタムメトリクスを実装するためのフレームワーク Kubernetesにおける実装 14 WAO Metrics Adapter: https://github.com/waok8s/wao-metrics-adapter Metrics API: https://github.com/kubernetes/metrics metrics-server: https://github.com/kubernetes-sigs/metrics-server kubernetes-sigs/custom-metrics-apiserver: https://github.com/kubernetes-sigs/custom-metrics-apiserver NODE=worker-1 # CPU, memory (NodeMetrics) kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes/$NODE" # Inlet temperature kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta2/nodes/$NODE/inlet_temp" # Differential pressure kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta2/nodes/$NODE/delta_p" カスタムメトリクス type CustomMetricsProvider interface { GetMetricByName( 省略 ) (*custom_metrics.MetricValue, error) GetMetricBySelector( 省略 ) (*custom_metrics.MetricValueList, error) ListAllMetrics() []CustomMetricInfo } inletTemp: type: Redfish endpoint: "https://10.0.1.123" basicAuthSecret: name: "redfish-basicauth-node123" fetchInterval: 10s 収集用の設定 @NodeConfig
  14. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 全体構成 ◼ 設定管理 ◆ カスタムリソース ◼ メトリクス収集 ◆ カスタムメトリクス ◼ スケジューリング ◆ スケジューラプラグイン Kubernetesにおける実装 15 Kubernetes Cluster Control Plane Node Config Metrics Server WAO Metrics Adapter 推論サーバ NodeConfig Template Node WAO Scheduler WAO Client Nodeの静圧差を取得 センサのデータを集約 Nodeの消費電力予測値を取得 テンプレートを適用する カスタムコントローラ 標準のメトリクスを提供 メトリクス取得と推論を行う キャッシュ付きのクライアント 対応する物理サーバ Node Config Node Node Config Node 消費電力 モデル メトリクス取得 Redfish or IPMI経由で Nodeの吸気温度を取得 WAO用のメトリクスを提供する Custom Metrics Adapter 差圧API WAO Controller NodeのWAOに関する設定を 管理するカスタムリソース
  15. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. スケジューリング ◼ WAO Scheduler(スケジューラプラグイン) ◆ PreFilter: 設定不備のPodをリジェクト ➢ CPUのrequests or limitsは必須 ◆ Score: 対象Nodeに配置したときの消費電力を算出 ◆ NormalizeScore: スコアを正規化 ➢ 例外等含めて [0, 100] に収める ◼ 速くするために ◆ ScoreメソッドはPodあたりNode回実行される ◆ メトリクスと推論結果をキャッシュ QPSや並列数を調整 ◆ 通常のkube-schedulerとほぼ同じ実行時間に ◼ Scheduling Frameworkで実装 Kubernetesにおける実装 16 WAO Scheduler: https://github.com/waok8s/wao-scheduler プラグインのインタフェース: https://github.com/kubernetes/kubernetes/blob/v1.30.0/pkg/scheduler/framework/interface.go apiVersion: kubescheduler.config.k8s.io/v1 kind: KubeSchedulerConfiguration parallelism: 64 profiles: - schedulerName: wao-scheduler (省略) デフォルトの並列数は16 開始 入力: Pod, Node Podの想定CPU 使用率を算出 NodeのCPU 使用率を取得 Nodeの吸気温度 と静圧差を取得 消費電力 配置前 の推論を実施 消費電力 配置後 の推論を実施 終了 出力: スコア + - Scoreメソッド
  16. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 全体構成 ◼ 設定管理 ◆ カスタムリソース ◼ メトリクス収集 ◆ カスタムメトリクス ◼ スケジューリング ◆ スケジューラプラグイン Kubernetesにおける実装 17 Kubernetes Cluster Control Plane Node Config Metrics Server WAO Metrics Adapter 推論サーバ NodeConfig Template Node WAO Scheduler WAO Client Nodeの静圧差を取得 センサのデータを集約 Nodeの消費電力予測値を取得 テンプレートを適用する カスタムコントローラ 標準のメトリクスを提供 メトリクス取得と推論を行う キャッシュ付きのクライアント 対応する物理サーバ Node Config Node Node Config Node 消費電力 モデル メトリクス取得 Redfish or IPMI経由で Nodeの吸気温度を取得 WAO用のメトリクスを提供する Custom Metrics Adapter 差圧API WAO Controller NodeのWAOに関する設定を 管理するカスタムリソース
  17. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 作ってみて ◼ 工夫した点、良かった点 ◆ 導入が簡単ですぐ使える ◆ メンテナンスも楽 ➢ Kubernetesの拡張機構がすごい! ◼ 気になる点 ◆ 大規模環境での性能 ➢ ちゃんと検証しなきゃ ◆ 課題はたくさんある(後述) Kubernetesにおける実装 18 apiVersion: v1 kind: Pod metadata: name: pod-1 namespace: default spec: schedulerName: wao-scheduler containers: - name: nginx image: nginx resources: requests: cpu: "1" memory: 250Mi limits: cpu: "1.3" memory: 250Mi スケジューラを指定
  18. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. ③ 課題と展望 19
  19. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 実験結果 ◼ システム全体で10%-20%の省エネを実現 ◆ 継続的な負荷が発生するアプリケーション 課題と展望 20 Power Saving Proposed WAO Scheduler Default Kubernetes Scheduler Intel® Xeon® Gold 搭載サーバでの実験結果 システム全体の消費電力(WAOなし→WAOあり) 13%削減 機種やCPU使用率によるが 50%以上変わることも
  20. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. 今後の展望 ◼ Eviction & 再配置 ◼ 空調との連携 ◼ ロードバランシング、応答速度、etc. 事業化に向けた課題 ◼ アクセラレータへの対応 ◆ GPUサーバの消費電力は数kW ◼ 仮想マシンへの対応 ◆ 現状ではNodeはベアメタルを想定 ◼ ワークロードシフトとの統合 ◆ 電力需給制御 × 省エネ 課題と展望 21 Kubernetesスケジューラ [省エネ] WAOプラグイン [電力需給制御] SmartPower プラグイン 消費電力 予測モデル ワークロードシフトとの統合
  21. Copyright © 2024 Bitmedia, Inc. All Rights Reserved. Copyright ©

    2024 Bitmedia, Inc. All Rights Reserved. まとめ 22