Azure Kubernetes Service (AKS) での Kubernetes イベント ドリブン自動スケール (KEDA) アドオンを使用したアプリケーションの自動スケーリングの簡略化

Von Bedeutung

AKS の KEDA アドオンでは現在、 メトリック サーバー または オペレーターの CPU 要求または制限およびその他の Helm 値の変更はサポートされていません。 アドオンを使用する場合は、この制限に注意してください。 ご質問がある場合は、こちらでお気軽にお問い合せ 下さい

Kubernetes イベント ドリブン自動スケーリング (KEDA) は、アプリケーションの自動スケールを簡単にする単一目的の軽量コンポーネントです。 これは、クラウド ネイティブ コンピューティング基盤 (CNCF) 大学院プロジェクトです。 KEDA では、イベントドリブンの自動スケーリングを使用して、アプリケーションをスケーリングし、ゼロにスケーリングすることで、持続可能でコスト効率の高い方法で需要を満たします。

ほとんどの運用ワークロードでは、AKS Automatic が推奨される既定の AKS エクスペリエンスです。 AKS Automatic は既定で運用環境の準備が整っており、クラスターで事前に構成された KEDA が含まれています。 AKS Standard を使用する場合は、マネージド KEDA アドオンを使用して KEDA を有効にすることができます。

AKS Automatic の詳細については、「Azure Kubernetes Service (AKS) Automatic とは」を参照してください。

KEDA バージョン 2.15 以降では、 ポッド ID のサポートを削除する破壊的変更が導入されています。 Pod ID を使用している場合は、認証にワークロード ID を使用することをお勧めします。 KEDA マネージド アドオンは現在 KEDA バージョン 2.15 以降を実行していませんが、マネージド アドオンは AKS プレビュー バージョン 1.32 で KEDA 2.15 以降の実行を開始します。

ワークロード ID を使用してアプリケーションを安全にスケーリングする方法の詳細については、 チュートリアルを参照してください。 KEDAの破壊的変更や非推奨ポリシーを確認するには、公式ドキュメントをご覧ください。

AKS Automatic および AKS Standard における KEDA

KEDA は両方の AKS クラスター モードで使用できますが、セットアップ パスは異なります。

  • AKS Automatic: KEDA は事前に構成されており、使用する準備ができています。
  • AKS Standard: AKS マネージド アドオンを有効にして KEDA を有効にします。

ほとんどの運用シナリオでは、AKS Automatic から始めて、運用対応の既定値を使用し、クラスター管理のオーバーヘッドを削減します。

アーキテクチャ

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

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

KEDA のアーキテクチャと Kubernetes の拡張方法を示す図。

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

インストールと有効化

AKS Automatic

KEDA は AKS Automatic で事前構成されています。 KEDA アドオンの個別のインストール手順は必要ありません。

AKS Standard

次のいずれかの方法を使用して、AKS Standard で KEDA を有効にします。

マネージド KEDA アドオンは、AKS と統合された完全にサポートされている KEDA インストールを提供します。

機能と特徴

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

  • 需要が減少したときにワークロードをゼロにスケーリングします。
  • Azure KEDA スケーラーを使用して、需要に合わせてアプリケーション ワークロードをスケーリングします。
  • ScaledObjects を使用して、Deployment、StatefulSets、または /scale サブリソースを定義する任意のカスタム リソースなどのアプリケーションをオートスケールします。
  • ScaledJobsを使用してジョブに似たワークロードを自動スケーリングします。
  • ワークロードから自動スケール認証を切り離して、運用環境レベルのセキュリティを使用します。
  • カスタム自動スケール ロジック用の独自の外部スケーラーを使用します。
  • 認証のためにMicrosoft Entra ワークロード ID と統合します。

AKS Automatic では、クラスターが KEDA で事前構成されているため、これらのイベントドリブン自動スケール機能が既定で取得されます。

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

運用ガイダンス

クラスター モードを選択するには、次のガイダンスを使用します。

  • KEDA を事前に構成した運用対応の既定のエクスペリエンスが必要な場合は、AKS Automatic を選択します。
  • より深いクラスター レベルのカスタマイズと明示的なアドオン管理が必要な場合は、AKS Standard を選択します。
  • イベント ドリブンの自動スケール ワークロードには、いずれかのモードで KEDA を使用します。

アドオンの制限事項

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

  • HTTP ワークロードをスケーリングする KEDA の HTTP アドオン (プレビュー) は拡張機能と共にインストールされませんが、個別にデプロイできます。
  • Azure Cosmos DB 変更フィードに基づいてスケーリングする Azure Cosmos DB 用 KEDA の外部スケーラーは、拡張機能と共にインストールされていませんが、個別にデプロイできます。
  • Kubernetes クラスターで許可される外部メトリック サーバーは 1 つだけです。 したがって、KEDA アドオンがクラスター内の唯一の外部メトリック サーバーとなります。
    • 複数の KEDA インストールはサポートされていません
  • KEDA の ScaledObject と水平ポッド オートスケーラー (HPA) を組み合わせて同じワークロードをスケーリングすることはお勧めしません。 KEDA はバックグラウンドで水平ポッドオートスケーラー (HPA) を使用し、予期しないスケーリング動作が発生するため、競合が発生します。
    • HPA が最初に作成されると、KEDA ScaledObject が作成され、KEDA ScaledObject の作成に失敗します。
    • KEDA ScaledObject が最初に作成されてから HPA が作成された場合、HPA の作成はブロックされません。

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

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 パッチは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。