Advanced Horizontal Pod Autoscaler (AHPA) は、1秒あたりのリクエスト数 (RPS) 、同時実行、CPU、メモリ使用量などの履歴メトリックに基づいて予測スケーリングを実行できます。 この予測機能により、積極的なスケーリング計画が可能になり、サービススケーリングの遅延を防ぐのに役立ちます。 AHPAでは、一定期間内にレプリケートされるポッドの最大数と最小数を指定することもできます。 cron式を使用すると、特定の時間間隔のスケーリング範囲を設定し、1日のさまざまな時間帯に最適なリソース割り当てを確保するために必要なレプリカ数を指定できます。
前提条件
Knativeはクラスターにデプロイされています。 詳細については、「」「Knativeのデプロイ」をご参照ください。
AHPAがデプロイされました。 詳細については、「」「AHPAのデプロイ」をご参照ください。
ステップ1: AHPAを使用して自動スケーリングのメトリックを設定する
次のYAMLテンプレートを使用して、AHPA構成ファイルを作成し、クラスターにデプロイします。
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
name: ahpa-demo
spec:
metrics:
- type: Resource
resource:
name: rps
target:
type: Utilization
averageUtilization: 10 # The RPS threshold is set to 10.
maxReplicas: 50 # The maximum number of replicated pods is set to 50.
minReplicas: 0 # The minimum number of replicated pods is set to 0.
prediction:
quantile: 95 # The confidence level of prediction is set to 95%.
scaleUpForward: 180 # The time range of forward prediction is set to 180 seconds.
# The number of replicated pods is limited by the maximum number of replicated pods and the minimum number of replicated pods defined by AHPA from 00:00:00 on June 1, 2023 to 00:00:00 on June 1, 2123.
instanceBounds:
- startTime: "2023-06-01 00:00:00"
endTime: "2123-06-01 00:00:00"
bounds:
# The minimum number of replicated pods is 0 and the maximum number of replicated pods is 50 from 0 am to 6 am.
- cron: '* 0-6 ? * *'
maxReplicas: 50
minReplicas: 0
# The minimum number of replicated pods is 5 and the maximum number of replicated pods is 50 from 7 am to 9 am.
- cron: '* 7-9 ? * *'
maxReplicas: 50
minReplicas: 5
# The minimum number of replicated pods is 10 and the maximum number of replicated pods is 50 from 10 am to 4 pm.
- cron: '* 10-16 ? * *'
maxReplicas: 50
minReplicas: 10
# The minimum number of replicated pods is 2 and the maximum number of replicated pods is 50 from 5 pm to 11 pm.
- cron: '* 17-23 ? * *'
maxReplicas: 50
minReplicas: 2
パラメーター | 必須 | 説明 |
メトリック | 必須 | 自動スケーリングのメトリックを設定します。 RPS、同時実行、CPU、およびメモリメトリクスがサポートされています。 |
maxReplicas | 必須 | 許可されるレプリケートポッドの最大数。 |
minReplicas | 必須 | 保証する必要があるレプリケートされたポッドの最小数。 |
instanceBounds | 選択可能 | レプリケートされるポッドの数が、AHPAで定義されているレプリケートされるポッドの最大数とレプリケートされるポッドの最小数によって制限される期間。
|
境界 | 選択可能 | 指定された期間内にレプリケートされたポッドの最大数とレプリケートされたポッドの最小数。
|
cron式で使用されるフィールド
次の表に、CRON式に含まれるフィールドを示します。 詳細については、「Cron式」をご参照ください。
項目 | 特殊文字 | 必須 | 説明 |
分 | * / , - | 必須 | 有効な値: 0 ~ 59。 |
時間 | * / , - | 必須 | 有効な値: 0 ~ 23。 |
日の月 | * / , – ? | 必須 | 有効な値: 1 ~ 31。 |
月 | * / , - | 必須 | 有効な値: 1〜12またはJAN〜DEC。 説明 JANからDECまでの有効値は大文字と小文字を区別しません。 |
曜日 | * / , – ? | 選択可能 | 有効値: 0〜6またはSUN〜SAT。 説明
|
cron式で使用される特殊文字:
アスタリスク (*) は任意の値を示す。 たとえば、
*
は任意の分または時間を示します。スラッシュ (/) はステップサイズを示します。 たとえば、
/5
は5つの時間単位を示します。コンマ (,) は区切り文字として使用されます。 たとえば、
1,3、5
は値1、3、および5を示します。ハイフン (-) は値の範囲で使用されます。 例えば、
1〜5
は1〜5の値を示す。疑問符 (?) は、日付および曜日フィールドでのみ変数値を示すために使用されます。
手順2: Knativeサービスの作成とサービスのAHPAの有効化
AHPAを有効にすると、Knativeサービスを通じてAHPAを使用できます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
Knativeページの [サービス] タブで、名前空間を既定に設定し、[テンプレートから作成] をクリックして、次のYAMLコンテンツをエディターにコピーし、[作成] をクリックして、helloworld-go-demoという名前のサービスを作成します。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go-demo spec: template: metadata: annotations: autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev # Specify the AHPA plug-in. autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo" # If you modify the AHPA template parameter, the corresponding revision is also updated. spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"
サービスが作成されたら、手順3: サービスへのアクセスで使用されるサービスのゲートウェイアドレスとドメイン名を記録します。
手順3: サービスへのアクセス
次のコマンドを実行して、サービスにアクセスします。
# helloworld-go-demo.default.example.com is the default domain name of the Service.
# alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com is the gateway address of the Service.
curl -H "Host: helloworld-go-demo.default.example.com" http://alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com
期待される出力:
Hello Knative!
ステップ4 (オプション): スケジュールされたスケーリングの確認
Knativeの [モニタリングダッシュボード] で、Knativeサービスのポッドスケーリングの傾向を表示できます。 Knativeダッシュボードの詳細については、「Knativeモニタリングダッシュボードの表示」をご参照ください。
Knativeアプリケーションのポッド数をゼロにスケーリングすると、要求の同時実行性や1秒間にポッドに送信される要求数などのメトリックをManaged Service for Prometheusで収集することはできません。 これらのメトリックは、Knativeアプリケーションのポッドにアクセスした後にのみコンソールで表示できます。
Knativeアプリケーションのポッド数がゼロでない場合は、リクエストの同時実行性や1秒あたりにポッドに送信されるリクエスト数などのメトリックをコンソールで直接表示できます。 Knativeアプリケーションのポッドにアクセスする必要はありません。
関連ドキュメント
同時ポッドリクエスト数とRPS設定に基づいて自動スケーリングを設定できます。 詳細については、「トラフィック変動に耐える自動スケーリングの有効化」をご参照ください。