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

Container Service for Kubernetes:予測オートスケーリングのための AHPA のデプロイ

最終更新日:Aug 26, 2026

Container Service for Kubernetes は、AHPA (Advanced Horizontal Pod Autoscaler) をサポートしています。AHPA は、過去のメトリクスから学習して将来のリソース需要を予測し、Pod のレプリカを動的に調整します。トラフィックのピーク前にスケールアップと事前ウォームアップを行い、応答性と安定性を向上させ、トラフィックが少ない時間帯にはスケールダウンしてコストを削減します。

前提条件

  • ACK マネージドクラスターまたはACK サーバーレスクラスターが作成されていること。詳細については、「ACK マネージドクラスターの作成」または「クラスターの作成」をご参照ください。

  • Managed Service for Prometheus (Prometheus) が有効化されており、CPU やメモリ使用量などのアプリケーションの履歴データが少なくとも 7 日分あること。詳細については、「Prometheus へのアクセスと設定」をご参照ください。

手順1:AHPA コントローラーのインストール

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. アドオン管理 ページで、AHPA コントローラーを見つけて インストール をクリックします。プロンプトに従います。

手順2:Prometheus データソースの設定

  1. にログインします。 ARMSコンソールを使用します。

  2. 左側のナビゲーションウィンドウで、Prometheusのマネージドサービス > インスタンス.

  3. インスタンス ページでリージョンを選択し、ACK クラスターと同じ名前のインスタンスをクリックします。

  4. 設定 ページの HTTP API アドレス (Grafana 読み取りアドレス) セクションで、以下を控えておきます。

    • (オプション) トークンベースの認証が有効な場合は、アクセストークン。

    • インターネット エンドポイント (Prometheus URL)。

  5. ACK クラスターに Prometheus のクエリ URL を設定します。

    1. 次の内容で application-intelligence.yaml を作成します。

      • prometheusUrl:Prometheus エンドポイント。

      • token:Prometheus のアクセストークン。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: application-intelligence
        namespace: kube-system
      data:
        prometheusUrl: "http://cn-hangzhou-intranet.arms.aliyuncs.com:9443/api/v1/prometheus/da9d7dece901db4c9fc7f5b9c40****/158120454317****/cc6df477a982145d986e3f79c985a****/cn-hangzhou"
        token: "eyJhxxxxx"
      説明

      Prometheus で AHPA ダッシュボードを表示するには、この ConfigMap で以下のフィールドも設定します。

      • prometheus_writer_url: Remote Write の内部エンドポイント。

      • prometheus_writer_ak: Alibaba Cloud アカウントの AccessKey ID。

      • prometheus_writer_sk: Alibaba Cloud アカウントの AccessKey Secret。

      詳細については、「AHPA の Prometheus ダッシュボードの有効化」をご参照ください。

    2. application-intelligence をデプロイします。

      kubectl apply -f application-intelligence.yaml

手順3:テストサービスのデプロイ

テストサービスには、Deployment fib-deployment、Service fib-svc、およびトラフィックをシミュレートするロードジェネレーター fib-loader が含まれます。HPA は、AHPA と比較するためのベースラインを提供します。

次の内容で demo.yaml を作成します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fib-deployment
  namespace: default
  annotations:
    k8s.aliyun.com/eci-use-specs: "1-2Gi"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fib-deployment
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: fib-deployment
    spec:
      containers:
      - image: registry.cn-huhehaote.aliyuncs.com/kubeway/knative-sample-fib-server:20200820-171837
        imagePullPolicy: IfNotPresent
        name: user-container
        ports:
        - containerPort: 8080
          name: user-port
          protocol: TCP
        resources:
          limits:
            cpu: "1"
            memory: 2000Mi
          requests:
            cpu: "1"
            memory: 2000Mi
---
apiVersion: v1
kind: Service
metadata:
  name: fib-svc
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: fib-deployment
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fib-loader
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: fib-loader
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: fib-loader
    spec:
      containers:
      - args:
        - -c
        - |
          /ko-app/fib-loader --service-url="http://fib-svc.${NAMESPACE}?size=35&interval=0" --save-path=/tmp/fib-loader-chart.html
        command:
        - sh
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: registry.cn-huhehaote.aliyuncs.com/kubeway/knative-sample-fib-loader:20201126-110434
        imagePullPolicy: IfNotPresent
        name: loader
        ports:
        - containerPort: 8090
          name: chart
          protocol: TCP
        resources:
          limits:
            cpu: "8"
            memory: 16000Mi
          requests:
            cpu: "2"
            memory: 4000Mi
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: fib-hpa
  namespace: default
spec:
  maxReplicas: 50
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: fib-deployment
  targetCPUUtilizationPercentage: 50
---

手順4:AHPA のデプロイ

スケーリングポリシーを設定するには、AdvancedHorizontalPodAutoscaler リソースを作成します。

  1. 次の内容で ahpa-demo.yaml を作成します。

    apiVersion: autoscaling.alibabacloud.com/v1beta1
    kind: AdvancedHorizontalPodAutoscaler
    metadata:
      name: ahpa-demo
    spec:
      scaleStrategy: observer
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 40
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: fib-deployment 
      maxReplicas: 100
      minReplicas: 2
      stabilizationWindowSeconds: 300
      prediction:
        quantile: 95
        scaleUpForward: 180
      instanceBounds:
      - startTime: "2021-12-16 00:00:00"
        endTime: "2031-12-16 00:00:00"
        bounds:
        - cron: "* 0-8 ? * MON-FRI"
          maxReplicas: 15
          minReplicas: 4
        - cron: "* 9-15 ? * MON-FRI"
          maxReplicas: 15
          minReplicas: 10
        - cron: "* 16-23 ? * MON-FRI"
          maxReplicas: 20
          minReplicas: 15

    選択されたパラメーター。

    パラメーター

    必須

    説明

    scaleTargetRef

    はい

    ターゲットの Deployment。

    metrics

    はい

    スケーリングメトリクス。サポートされているメトリクスには、CPU、GPU、メモリ、QPS、RT があります。

    target

    はい

    ターゲットのしきい値。たとえば、averageUtilization: 40 は CPU 使用率 40% をターゲットにします。

    scaleStrategy

    いいえ

    スケーリングモード。デフォルト: observer

    • auto: AHPA がスケーリングを実行します。

    • observer: AHPA はスケーリングを行わず、監視します。AHPA の動作を検証するために使用します。

    • proactive:プロアクティブな予測のみが有効になります。

    • reactive:リアクティブなスケーリングのみが有効になります。

    maxReplicas

    はい

    最大レプリカ数。

    minReplicas

    はい

    最小レプリカ数。

    stabilizationWindowSeconds

    いいえ

    安定化ウィンドウ。レプリカ数の急激な変動を防ぎます。デフォルト: 300 秒。

    prediction.quantile

    いいえ

    予測分位数 (0~100)。値が大きいほど、予測はより保守的になります。推奨値:90~99。デフォルト: 99。

    prediction.scaleUpForward

    はい

    新しい Pod が Ready 状態になるまでの時間。コールドスタート時間とも呼ばれます。

    instanceBounds

    いいえ

    特定の期間におけるレプリカ数の境界。

    • startTime:開始時刻。

    • endTime:終了時刻。

    instanceBounds.bounds.cron

    いいえ

    スケジュールされたタスクの cron 式。たとえば、 - cron: "* 0-8 ? * MON-FRI" は、月曜日から金曜日の 00:00 から 08:59 まで毎分実行されます。

    cron 式のフィールド。詳細については、「Cron スケジュールタスク」をご参照ください。

    フィールド

    必須

    許容値

    特殊文字

    はい

    0–59

    * / , -

    はい

    0–23

    * / , -

    日 (月)

    はい

    1–31

    * / , - ?

    はい

    1–12 または JAN–DEC

    * / , -

    曜日

    はい

    0–6 または SUN–SAT

    * / , - ?

    説明
    • 月と曜日は大文字と小文字を区別しません。たとえば、SUNSunsun は等価です。

    • 曜日が指定されていない場合、デフォルトは * です。

    • 特殊文字:

      • *: すべての値に一致します。

      • /: 増分を指定します。

      • ,: 列挙値を区切ります。

      • -: 範囲を指定します。

      • ?: 指定なし。日または曜日で、もう一方が設定されている場合に使用します。

  2. AHPA スケーリングポリシーを作成します。

    kubectl apply -f ahpa-demo.yaml

手順5:予測結果の表示

AHPA の Prometheus ダッシュボードを有効化して、予測結果を表示します。

説明

予測には 7 日間の履歴データが必要です。サンプルアプリケーションを 7 日間実行するか、AHPA リソースで既存の本番アプリケーションを指定してください。

この例では、observer スケーリングモード (observer モード) を使用して、AHPA の予測と、HPA をベースラインとする実際のリソース需要を比較します。

image.png

  • 実際の CPU 使用率と予測 CPU 使用率:緑色の線:実際の CPU 使用率 (HPA)。黄色の線:AHPA が予測した CPU 使用率。

    • 黄色が緑色の上にある:予測されたキャパシティが十分であることを示します。

    • 黄色が緑色より先に上昇している:AHPA が需要に先駆けてリソースを事前ウォームアップしていることを示します。

  • Pod の推移:緑色の線:実際の Pod 数 (HPA)。黄色の線:AHPA が予測した Pod 数。

    • 黄色の曲線が低い: AHPA がより少ない Pod で同じ目標を達成していることを示します。

    • 黄色の曲線が滑らか: AHPA のスケーリングは変動がより少なく、安定性が向上していることを示します。

予測された傾向が期待どおりであれば、スケーリングモードを auto に設定し、AHPA にスケーリングを管理させます。

関連ドキュメント