すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:Knative と AHPA を使用してスケジュールされた自動スケーリングを設定する

最終更新日:Jun 22, 2026

Advanced Horizontal Pod Autoscaler (AHPA) は、RPS、同時実行数、CPU、メモリメトリックなどの履歴値に基づいて予測スケーリングを実行できます。事前にリソースをスケーリングし、指定された期間内に指定された Pod の最大数または最小数を維持できます。cron 式を定義することで、指定された期間内の Pod の最大数と最小数を指定できます。

前提条件

手順1:AHPA を使用した自動スケーリングのメトリック設定

次の YAML コンテンツに基づいて AHPA ConfigMap を作成し、ACS クラスターに AHPA をデプロイします。

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
  name: ahpa-demo
spec:
  metrics:
  - type: Resource
    resource:
      name: rps
      target:
        type: Utilization
        averageUtilization: 10 # RPS のしきい値は 10 に設定されています。
  maxReplicas: 50 # レプリカの最大数は 50 に設定されています。
  minReplicas: 0 # レプリカの最小数は 0 に設定されています。
  prediction:
    quantile: 95 # 予測の信頼度は 95% に設定されています。
    scaleUpForward: 180 # 順方向予測の時間範囲は 180 秒に設定されています。
# 2023年6月1日 00:00:00 から 2123年6月1日 00:00:00 まで、レプリカ数は AHPA で定義された最大レプリカ数と最小レプリカ数によって制限されます。
  instanceBounds:
  - startTime: "2023-06-01 00:00:00"
    endTime: "2123-06-01 00:00:00"
    bounds:
# 午前0時から午前6時まで、最小レプリカ数は 0、最大レプリカ数は 50 です。
    - cron: '* 0-6 ?  * *'
      maxReplicas: 50
      minReplicas: 0
# 午前7時から午前9時まで、最小レプリカ数は 5、最大レプリカ数は 50 です。
    - cron: '* 7-9 ?  * *'
      maxReplicas: 50
      minReplicas: 5
# 午前10時から午後4時まで、最小レプリカ数は 10、最大レプリカ数は 50 です。
    - cron: '* 10-16 ?  * *'
      maxReplicas: 50
      minReplicas: 10
# 午後5時から午後11時まで、最小レプリカ数は 2、最大レプリカ数は 50 です。
    - cron: '* 17-23 ?  * *'
      maxReplicas: 50
      minReplicas: 2

パラメーター

必須

説明

metrics

はい

自動スケーリングのメトリックを設定します。RPS、同時実行数、CPU、メモリのメトリックがサポートされています。

maxReplicas

はい

許可されるレプリカの最大数。

minReplicas

はい

保証されなければならないレプリカの最小数。

instanceBounds

いいえ

レプリカ数が AHPA で定義された最大レプリカ数と最小レプリカ数によって制限される期間。

  • startTime:クエリタスクの開始時刻。

  • endTime:クエリタスクの終了時刻。

bounds

いいえ

指定された期間内のレプリカの最大数と最小数。

  • cron:期間を指定する cron 式。cron 式を入力して CronJob を設定できます。

    cron 式を使用して CronJob を設定したり、Pod を自動的にスケールアウトしたりする方法の詳細については、「cron 式で使用されるフィールド」セクションをご参照のうえ、cron 式で使用される特殊文字とワイルドカードの定義をご確認ください。

  • maxReplicas:レプリカの最大数。

  • minReplicas:レプリカの最小数。

cron 式で使用されるフィールド

cron 式のフィールドは次のとおりです。詳細については、「Cron 定期タスク」をご参照ください。

フィールド

特殊文字

必須

説明

* / , -

はい

有効値:0~59。

* / , -

はい

有効値:0~23。

* / , – ?

はい

有効値:1~31。

* / , -

はい

有効値:1~12 または JAN~DEC。

説明

JAN から DEC までの有効値は、大文字と小文字を区別しません。

曜日

* / , – ?

いいえ

有効値:0~6 または SUN~SAT。

説明
  • SUN から SAT までの有効値は、大文字と小文字を区別しません。たとえば、SUN と sun はどちらも日曜日を示します。

  • 曜日フィールドを指定しない場合、どの曜日も適用されます。これはワイルドカード (*) と同じです。

cron 式で使用される特殊文字:

  • アスタリスク (*) は任意の値を示します。たとえば、* は任意の分または時を示します。

  • スラッシュ (/) はステップサイズを示します。たとえば、/5 は 5 つの時間単位を示します。

  • カンマ (,) は区切り文字として使用されます。たとえば、1,3,5 は値 1、3、5 を示します。

  • ハイフン (-) は値の範囲で使用されます。たとえば、1-5 は値 1~5 を示します。

  • 疑問符 (?) は、日と曜日のフィールドでのみ使用され、可変値を示します。

手順2:Knative サービスの作成と AHPA の有効化

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、Applications > [Knative] を選択します。

  3. [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 # AHPA プラグインを指定します。
            autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo" # AHPA テンプレートパラメーターを変更すると、対応するリビジョンも更新されます。
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"

    サービスが作成されたら、サービスのゲートウェイアドレスとドメイン名を記録します。これらは 手順3:サービスへのアクセス で使用します。

    [サービス] タブの [アクセスゲートウェイ] セクションで、ゲートウェイアドレス (例:alb-xxx.ncs.com) を確認できます。サービスリストの [デフォルトドメイン名] 列には、サービスのドメイン名 (例:helloworld-go.default.example.com) が表示されます。サービスにアクセスするには、`Host` ヘッダーをサービスのデフォルトドメイン名に設定して、ゲートウェイアドレスにリクエストを送信します。

手順3:サービスへのアクセス

  1. 次のコマンドを実行してサービスにアクセスします。

    # helloworld-go-demo.default.example.com はサービスのデフォルトドメイン名です。
    # alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com はサービスのゲートウェイアドレスです。
    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 アプリケーションがゼロにスケールダウンし、実行中の Pod がない場合、Managed Service for Prometheus は Pod の同時実行リクエスト数や 1 秒あたりのリクエスト数 (RPS) などのメトリックを収集できません。これらのメトリックは、Knative アプリケーションの Pod にリクエストが送信された後にのみコンソールに表示されます。

  • Knative アプリケーションがゼロにスケールダウンしない場合、リクエストを処理していなくても、Pod の同時実行リクエスト数や 1 秒あたりのリクエスト数 (RPS) などのメトリックがコンソールに表示されます。

image.png

参考

Pod の同時リクエスト数と RPS 設定に基づいて自動スケーリングを設定できます。詳細については、「トラフィックの変動に対応するための自動スケーリングの有効化」をご参照ください。