メインコンテンツまでスキップ

負荷の生成

設定したKEDA ScaledObjectに応答してKEDAがDeploymentをスケールする様子を観察するには、アプリケーションに負荷を生成する必要があります。heyを使用してワークロードのホームページを呼び出すことで負荷を生成します。

以下のコマンドは、次の設定で負荷ジェネレーターを実行します:

  • 3つのワーカーが同時に実行
  • それぞれが1秒あたり5クエリを送信
  • 最大10分間実行
~$export ALB_HOSTNAME=$(kubectl get ingress ui-auto -n ui -o yaml | yq .status.loadBalancer.ingress[0].hostname)
~$kubectl run load-generator \
--image=williamyeh/hey:latest \
--restart=Never -- -c 3 -q 5 -z 10m http://$ALB_HOSTNAME/home

ScaledObjectに基づいて、KEDAはHPAリソースを作成し、HPAがワークロードをスケールするために必要なメトリクスを提供します。アプリケーションにリクエストが到達している状態で、HPAリソースを監視して進行状況を確認できます:

~$kubectl get hpa keda-hpa-ui-hpa -n ui --watch
NAME              REFERENCE       TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
keda-hpa-ui-hpa   Deployment/ui   7/100 (avg)   1         10        1          7m58s
keda-hpa-ui-hpa   Deployment/ui   778/100 (avg)   1         10        1          8m33s
keda-hpa-ui-hpa   Deployment/ui   194500m/100 (avg)   1         10        4          8m48s
keda-hpa-ui-hpa   Deployment/ui   97250m/100 (avg)    1         10        8          9m3s
keda-hpa-ui-hpa   Deployment/ui   625m/100 (avg)      1         10        8          9m18s
keda-hpa-ui-hpa   Deployment/ui   91500m/100 (avg)    1         10        8          9m33s
keda-hpa-ui-hpa   Deployment/ui   92125m/100 (avg)    1         10        8          9m48s
keda-hpa-ui-hpa   Deployment/ui   750m/100 (avg)      1         10        8          10m
keda-hpa-ui-hpa   Deployment/ui   102625m/100 (avg)   1         10        8          10m
keda-hpa-ui-hpa   Deployment/ui   113625m/100 (avg)   1         10        8          11m
keda-hpa-ui-hpa   Deployment/ui   90900m/100 (avg)    1         10        10         11m
keda-hpa-ui-hpa   Deployment/ui   91500m/100 (avg)    1         10        10         12m

オートスケーリングの動作に満足したら、Ctrl+Cでwatchを終了し、次のように負荷ジェネレーターを停止できます:

~$kubectl delete pod load-generator --ignore-not-found

負荷ジェネレーターが終了すると、HPAは設定に基づいて最小レプリカ数までゆっくりと減らしていくことに注目してください。

CloudWatchコンソールで負荷テストの結果を確認することもできます:

AWS console iconCloudWatchコンソールを開く

お使いのアカウントでこのグラフを再現するには、CloudWatchメトリクスコンソールから、2つのメトリクスを追加し、それに応じてグラフを設定する必要があります:

  1. Metricsの下で、クラスターと同じリージョンにいることを確認します。
  2. ApplicationELB > Per AppELB Metrics, per TG Metricsの下で、RequestCountRequestCountPerTargetを選択します。
  3. **Graphed Metrics (2)**タブをクリックし、各メトリクスに対して以下を実行します:
    1. StatisticAverageからSumに変更します。
    2. Period5 minutesから1 minuteに変更します。

結果から、最初はすべての負荷が単一のPodで処理されていましたが、KEDAがワークロードをスケールし始めると、リクエストはロードバランサーのターゲットグループで有効なターゲットになった追加のPodに分散されることがわかります。負荷ジェネレーターPodを10分間実行させた場合、このような結果が表示されます。

Insights