Kubernetes Event-driven Autoscaling (KEDA) アドオンを使用したアプリケーションの自動スケーリングの簡略化

Kubernetes Event-driven Autoscaling (KEDA) は、アプリケーションの自動スケーリングをシンプルにすることを目指す単一目的の軽量コンポーネントであり、CNCF Graduated プロジェクトです。

イベント駆動型自動スケーリングを適用して、scale-to-zero で持続可能でコスト効率の高い方法で需要を満たすようにアプリケーションをスケーリングします。

KEDA アドオンを使用すると、マネージド KEDA インストールをデプロイすることで、それがさらに簡単になります。Azure Kubernetes Services (AKS) クラスターでアプリケーションをスケーリングできる Azure KEDA スケーラーの豊富なカタログが提供されます。

アーキテクチャ

KEDA には、次の 2 つの主要コンポーネントが用意されています。

  • KEDA オペレーターを使用すると、エンド ユーザーは、Kubernetes の Deployment、Job、StatefulSet、または /scale サブリソースを定義する任意のカスタム リソースをサポートして、0 から N 個のインスタンスへのワークロードのスケールイン/アウトを行うことができます。
  • メトリック サーバーによって、Kafka トピック内のメッセージや Azure イベント ハブ内のイベント数などの自動スケーリングを行う目的で、外部メトリックが Kubernetes の Horizontal Pod Autoscaler (HPA) に公開されます。 アップストリームの制限により、KEDA はインストールされている唯一のメトリック アダプターである必要があります。

Diagram that shows the architecture of K E D A and how it extends Kubernetes instead of re-inventing the wheel.

KEDA のしくみの詳細については、 KEDA の公式ドキュメントを参照してください。

インストール

KEDA は、ARM テンプレート または Azure CLI を使用して KEDA アドオンを有効にすることで、Azure Kubernetes Service (AKS) クラスターに追加できます。

KEDA アドオンにより、AKS と統合された KEDA の完全にサポートされたインストールが可能になります。

機能と特徴

KEDA には、次の機能があります:

  • scale-to-zero で持続可能でコスト効率の高いアプリケーションを構築する
  • Azure KEDA スケーラーの豊富なカタログを使用して、需要に合わせてアプリケーション ワークロードをスケーリングする
  • デプロイ、StatefulSets、/scale サブリソースを定義するカスタム リソースなどScaledObjects でアプリケーションを自動スケールする
  • ジョブに似たワークロードを ScaledJobs で自動スケーリング
  • ワークロードから自動スケール認証を切り離して運用グレードのセキュリティを使用する
  • 独自の外部スケーラーを使用して、カスタマイズされた自動スケーリングの決定を使用する
  • 認証のために Microsoft Entra Workload ID と統合する

Note

ワークロード ID を使用する予定の場合、KEDA アドオンを有効にする前に、ワークロード ID アドオンを有効にします

アドオンの制限事項

KEDA AKS アドオンには次の制限があります:

  • HTTP ワークロードをスケーリングする KEDA の HTTP アドオン (プレビュー) は拡張機能と共にインストールされませんが、個別にデプロイできます。
  • Azure Cosmos DB 変更フィードに基づいてスケーリングする Azure Cosmos DB 用 KEDA の外部スケーラーは、拡張機能と共にインストールされていませんが、個別にデプロイできます。
  • Kubernetes クラスターで許可されるメトリック サーバーは 1 つだけです。 そのため、KEDA アドオンはクラスター内の唯一のメトリック サーバーである必要があります。
    • 複数の KEDA インストールはサポートされていません

KEDA に関する一般的な質問については、FAQ の概要にアクセスすることをお勧めします。

Note

Microsoft Entra ワークロード ID を使用していて、ワークロード ID の前に KEDA を有効にする場合は、以下の手順に従って、適切な環境変数を挿入できるように KEDA オペレーター ポッドを再起動する必要があります。

  1. kubectl rollout restart deployment keda-operator -n kube-system を実行してポッドを再起動します。

  2. kubectl get pod -n kube-system を使用して、keda-operator で始まるポッドを見つけて、KEDA オペレーター ポッドを取得します。

  3. kubectl describe pod <keda-operator-pod> -n kube-system を実行して、環境変数が正常に挿入されたことを確認します。 Environment の下に、AZURE_TENANT_IDAZURE_FEDERATED_TOKEN_FILEAZURE_AUTHORITY_HOST の値が表示されます。

サポートされている Kubernetes および KEDA のバージョン

クラスター Kubernetes バージョンによって、AKS クラスターにインストールされる KEDA のバージョンが決まります。 各 AKS バージョンに対応する KEDA バージョンを確認するには、Kubernetes コンポーネント バージョン テーブルAKS マネージド アドオン列を参照してください。

GA Kubernetes バージョンの場合は、AKS はテーブル内の対応する KEDA マイナー バージョンを完全にサポートします。 Kubernetes プレビュー バージョンと最新の KEDA パッチは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

次のステップ