Kubernetes Event-driven Autoscaling (KEDA) アドオンを使用したアプリケーションの自動スケーリングの簡略化
Kubernetes Event-driven Autoscaling (KEDA) は、アプリケーションの自動スケーリングをシンプルにすることを目指す単一目的の軽量コンポーネントであり、CNCF Graduated プロジェクトです。
イベント駆動型自動スケーリングを適用して、scale-to-zero で持続可能でコスト効率の高い方法で需要を満たすようにアプリケーションをスケーリングします。
KEDA アドオンを使用すると、マネージド KEDA インストールをデプロイすることで、それがさらに簡単になります。Azure Kubernetes Services (AKS) クラスターでアプリケーションをスケーリングできる Azure KEDA スケーラーの豊富なカタログが提供されます。
Note
KEDA バージョン 2.15 では、ポッド ID のサポートの削除という破壊的変更が導入されました。 Pod ID を使用している場合は、認証にワークロード ID を使用することをお勧めします。 KEDA マネージド アドオンは現在 KEDA バージョン 2.15 を実行していませんが、AKS プレビュー バージョン 1.32 でこの実行を開始する予定です。
ワークロード ID を使用してアプリケーションを安全にスケーリングする方法の詳細については、チュートリアルを参照してください。 KEDA の破壊的変更/非推奨ポリシーを表示するには、公式ドキュメントをご覧ください。
Architecture
KEDA には、次の 2 つの主要コンポーネントが用意されています。
- KEDA オペレーターを使用すると、エンド ユーザーは、Kubernetes の Deployment、Job、StatefulSet、または
/scale
サブリソースを定義する任意のカスタム リソースをサポートして、0 から N 個のインスタンスへのワークロードのスケールイン/アウトを行うことができます。 - メトリック サーバーによって、Kafka トピック内のメッセージや Azure イベント ハブ内のイベント数などの自動スケーリングを行う目的で、外部メトリックが Kubernetes の Horizontal Pod Autoscaler (HPA) に公開されます。 アップストリームの制限により、KEDA がインストールされている唯一の外部メトリック アダプターである必要があります。
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 オペレーター ポッドを再起動する必要があります。
kubectl rollout restart deployment keda-operator -n kube-system
を実行してポッドを再起動します。kubectl get pod -n kube-system
を使用して、keda-operator
で始まるポッドを見つけて、KEDA オペレーター ポッドを取得します。kubectl describe pod <keda-operator-pod> -n kube-system
を実行して、環境変数が正常に挿入されたことを確認します。Environment
の下に、AZURE_TENANT_ID
、AZURE_FEDERATED_TOKEN_FILE
、AZURE_AUTHORITY_HOST
の値が表示されます。
サポートされている Kubernetes および KEDA のバージョン
クラスター Kubernetes バージョンによって、AKS クラスターにインストールされる KEDA のバージョンが決まります。 各 AKS バージョンに対応する KEDA バージョンを確認するには、Kubernetes コンポーネント バージョン テーブルの AKS マネージド アドオン列を参照してください。
GA Kubernetes バージョンの場合は、AKS はテーブル内の対応する KEDA マイナー バージョンを完全にサポートします。 Kubernetes プレビュー バージョンと最新の KEDA パッチは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
次のステップ
Azure Kubernetes Service