Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

MIXI, Inc. Introduction

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

MIXI, Inc. 子どもの写真・動画を、無料・無制限に
 共有できるスマートフォンアプリです


Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

MIXI, Inc. KEDA

Slide 8

Slide 8 text

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 を作成、更新、削除

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

MIXI, Inc. まとめ

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

MIXI, Inc.