Kubernetes Novice Tokyo #25 LT でお話しした資料です https://k8s-novice-jp.connpass.com/event/282344/
KEDAによるイベント駆動ジョブスケール@kohbisKubernetes Novice Tokyo #25
View Slide
MIXI, Inc.Agenda1. Introduction2. KEDA とは3. KEDA によるバックグラウンドジョブのスケール4. KEDA を動かしてみる5. まとめ
MIXI, Inc.Introduction
MIXI, Inc.About Me● Kubernetes 歴 1年● Kubernetes Novice Tokyo 勉強会には大変お世話になっていますKohei SUGIMOTO株式会社MIXI2022/04 ~『家族アルバム みてね』 SRETwitter : @kohbis
MIXI, Inc.子どもの写真・動画を、無料・無制限に 共有できるスマートフォンアプリです
MIXI, Inc.『家族アルバム みてね』のアーキテクチャ(概要)● Amazon EKS クラスター上の Ruby onRails アプリケーションがほとんど● バックグラウンドジョブは基本的にいずれか○ Shoryuken - Amazon SQS○ Sidekiq - Redis
MIXI, Inc.KEDA
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 を作成、更新、削除
MIXI, Inc.KEDA の役割● Agent○ Deploymentsのアクティブ/非アクティブを管理○ イベントがないときはレプリカ数を 0 にスケールインさせることができる● Metrics○ キューの長さなどイベントデータを HPA に公開● Admission Webhooks○ リソースへの変更を検証して設定ミスを防止 引用元: https://keda.sh/docs/2.10/concepts/#architecture
MIXI, Inc.KEDA によるバックグラウンドジョブのスケール
MIXI, Inc.バックグラウンドジョブのスケール● 『家族アルバム みてね』の場合○ Shoryuken■ KEDA による SQS メッセージサイズでのスケール○ Sidekiq■ KEDA + Prometheus による Busy ワーカー割合でのスケール
MIXI, Inc.Shoryuken - KEDA による SQS メッセージサイズでのスケール● Shoryuken○ Amazon SQS をバックエンドに非同期処理を実装できる● AWS SQS Queue Scaler を利用
MIXI, Inc.Sidekiq - KEDA + Prometheus による Busy ワーカー割合でのスケール● Sidekiq○ Redis をバックエンドに非同期処理を実装できる○ API (Sidekiq::ProcessSet) からメトリクス取得が可能● Sidekiq メトリクスを Prometheus Exporter で公開● Prometheus Scaler を利用して “Busy ワーカー数 / 並列数 = 稼働率” でスケール
MIXI, Inc.Sidekiq - KEDA + Prometheus による Busy ワーカー割合でのスケール
MIXI, Inc.KEDA を動かしてみる
MIXI, Inc.KEDA を動かしてみる - 準備● 環境 : Rancher Desktop● Metrics API Scaler を利用{"metrics": {"count": 1}}
MIXI, Inc.KEDA を動かしてみる - KEDA のインストール● 公式ドキュメント Deploying KEDA #install にしたがって Helm でインストール
MIXI, Inc.KEDA を動かしてみる - ScaledObject 作成
MIXI, Inc.KEDA を動かしてみる - レプリカ数 0 にスケールイン{"metrics": {"count": 0}}
MIXI, Inc.KEDA を動かしてみる - レプリカ数 3 にスケールアウト{"metrics": {"count": 3}}
MIXI, Inc.まとめ
MIXI, Inc.まとめ● KEDA でイベント駆動のオートスケールを実現できる● KEDA は様々なイベントリソースに対応した Scalers がある● KEDA は最小 0 のスケールインが可能、コスト効率のよいリソース活用ができるKEDA は既存リソースへの変更少なく導入が可能Knative Eventing や各マネージドサービス機能と比較・検討しつつサクッと試してもよいかも。
MIXI, Inc.