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

KEDAによるイベント駆動ジョブスケール / Event-driven job scale by KEDA

KEDAによるイベント駆動ジョブスケール / Event-driven job scale by KEDA

Kubernetes Novice Tokyo #25 LT でお話しした資料です
https://k8s-novice-jp.connpass.com/event/282344/

kohbis

May 27, 2023
Tweet

More Decks by kohbis

Other Decks in Technology

Transcript

  1. KEDAによる
    イベント駆動ジョブスケール
    @kohbis
    Kubernetes Novice Tokyo #25

    View Slide

  2. MIXI, Inc.
    Agenda
    1. Introduction
    2. KEDA とは
    3. KEDA によるバックグラウンドジョブのスケール
    4. KEDA を動かしてみる
    5. まとめ

    View Slide

  3. MIXI, Inc.
    Introduction

    View Slide

  4. MIXI, Inc.
    About Me
    ● Kubernetes 歴 1年
    ● Kubernetes Novice Tokyo 勉強会には大変お世話になっています
    Kohei SUGIMOTO
    株式会社MIXI
    2022/04 ~『家族アルバム みてね』 SRE
    Twitter : @kohbis

    View Slide

  5. MIXI, Inc.
    子どもの写真・動画を、無料・無制限に

    共有できるスマートフォンアプリです


    View Slide

  6. MIXI, Inc.
    『家族アルバム みてね』のアーキテクチャ(概要)
    ● Amazon EKS クラスター上の Ruby on
    Rails アプリケーションがほとんど
    ● バックグラウンドジョブは基本的にい
    ずれか
    ○ Shoryuken - Amazon SQS
    ○ Sidekiq - Redis

    View Slide

  7. MIXI, Inc.
    KEDA

    View Slide

  8. MIXI, Inc.
    KEDA - Kubernetes Event-driven Autoscaling
    ● 様々なイベントリソースのメトリクスに対応した Scalers を選択してコンテナのス
    ケーリングを実現するコンポーネント
    ○ Amazon SQS、Google Cloud Pub/Sub などビルトインで 50 以上
    ● HPA (Horizontal Pod Autoscaler) の CPU/メモリベースでは対応できないケースに活
    用できる
    ○ 例
    ■ CPU 使用率が上がるまでなかなかスケールされない
    ■ I/O 待ちや API 通信が多く CPU 使用率が上がりきらない
    ● ScaledObject という CR の定義に従って内部的に HPA を作成、更新、削除

    View Slide

  9. MIXI, Inc.
    KEDA の役割
    ● Agent
    ○ Deploymentsのアクティブ/非アクティブを管理
    ○ イベントがないときはレプリカ数を 0 にスケー
    ルインさせることができる
    ● Metrics
    ○ キューの長さなどイベントデータを HPA に公開
    ● Admission Webhooks
    ○ リソースへの変更を検証して設定ミスを防止 引用元: https://keda.sh/docs/2.10/concepts/#architecture

    View Slide

  10. MIXI, Inc.
    KEDA による
    バックグラウンドジョブのスケール

    View Slide

  11. MIXI, Inc.
    バックグラウンドジョブのスケール
    ● 『家族アルバム みてね』の場合
    ○ Shoryuken
    ■ KEDA による SQS メッセージサイズでのスケール
    ○ Sidekiq
    ■ KEDA + Prometheus による Busy ワーカー割合でのスケール

    View Slide

  12. MIXI, Inc.
    Shoryuken - KEDA による SQS メッセージサイズでのスケール
    ● Shoryuken
    ○ Amazon SQS をバックエンドに非同期処理を実装できる
    ● AWS SQS Queue Scaler を利用

    View Slide

  13. MIXI, Inc.
    Sidekiq - KEDA + Prometheus による Busy ワーカー割合でのスケール
    ● Sidekiq
    ○ Redis をバックエンドに非同期処理を実装できる
    ○ API (Sidekiq::ProcessSet) からメトリクス取得が可能
    ● Sidekiq メトリクスを Prometheus Exporter で公開
    ● Prometheus Scaler を利用して “Busy ワーカー数 / 並列数 = 稼働率” でスケール

    View Slide

  14. MIXI, Inc.
    Sidekiq - KEDA + Prometheus による Busy ワーカー割合でのスケール

    View Slide

  15. MIXI, Inc.
    KEDA を動かしてみる

    View Slide

  16. MIXI, Inc.
    KEDA を動かしてみる - 準備
    ● 環境 : Rancher Desktop
    ● Metrics API Scaler を利用
    {
    "metrics": {
    "count": 1
    }
    }

    View Slide

  17. MIXI, Inc.
    KEDA を動かしてみる - KEDA のインストール
    ● 公式ドキュメント Deploying KEDA #install にしたがって Helm でインストール

    View Slide

  18. MIXI, Inc.
    KEDA を動かしてみる - ScaledObject 作成

    View Slide

  19. MIXI, Inc.
    KEDA を動かしてみる - レプリカ数 0 にスケールイン
    {
    "metrics": {
    "count": 0
    }
    }

    View Slide

  20. MIXI, Inc.
    KEDA を動かしてみる - レプリカ数 3 にスケールアウト
    {
    "metrics": {
    "count": 3
    }
    }

    View Slide

  21. MIXI, Inc.
    まとめ

    View Slide

  22. MIXI, Inc.
    まとめ
    ● KEDA でイベント駆動のオートスケールを実現できる
    ● KEDA は様々なイベントリソースに対応した Scalers がある
    ● KEDA は最小 0 のスケールインが可能、コスト効率のよいリソース活用ができる
    KEDA は既存リソースへの変更少なく導入が可能
    Knative Eventing や各マネージドサービス機能と比較・検討しつつ
    サクッと試してもよいかも。

    View Slide

  23. MIXI, Inc.

    View Slide