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

Container Compute Service:HPA

最終更新日:Dec 27, 2024

Alibaba Cloud Container Compute Service (ACS) コンソールまたは kubectl を使用して、Horizontal Pod Autoscaler (HPA) を有効にしたアプリケーションを作成できます。このトピックでは、ACS クラスターで HPA を有効にしたアプリケーションを作成する方法と、HPA をテストする方法について説明します。

前提条件

HPA を有効にしたアプリケーションの作成

ACS コンソールの使用

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

  2. クラスターページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。

  3. デプロイメントタブで、イメージから作成をクリックします。

  4. 基本情報ステップで、アプリケーションの名前を入力し、パラメーターを設定して、次へをクリックします。

    パラメーター

    説明

    名前空間

    アプリケーションが属する名前空間を選択します。デフォルトの名前空間が自動的に選択されます。

    名前

    アプリケーションの名前を入力します。

    レプリカ

    アプリケーションにプロビジョニングするポッドの数。デフォルト値:2。

    タイプ

    リソースオブジェクトのタイプ。有効な値:デプロイメントStatefulSetジョブCronJob

    ラベル

    アプリケーションを識別するためにアプリケーションに追加するラベル。

    アノテーション

    アプリケーションに追加するアノテーション。

    インスタンスタイプ

    ポッドのインスタンスタイプ。有効な値:汎用BestEffortパフォーマンス向上

  5. コンテナーステップで、コンテナーパラメーターを設定し、イメージを選択して、必要なコンピューティングリソースを設定します。次へをクリックします。詳細については、コンテナーの設定を参照してください。

    説明

    デプロイメントに必要なコンピューティングリソースを設定する必要があります。設定しないと、HPA を有効にできません。

  6. アクセス制御 セクションの 詳細設定 ステップで、作成 をクリックしてサービスを作成します。詳細については、詳細設定 を参照してください。

  7. 詳細設定ステップで、有効にするHPA のを選択し、スケーリングのしきい値と関連設定を構成します。

    • メトリック:CPU 使用率またはメモリ使用率を選択します。選択したリソースタイプは、「必要なリソース」パラメーターで指定したものと同じである必要があります。

    • 条件:リソース使用率のしきい値を指定します。HPA は、しきい値を超えるとスケーリングイベントをトリガーします。水平ポッド自動スケーリングの実行に使用されるアルゴリズムの詳細については、アルゴリズムの詳細を参照してください。

    • 最大レプリカ数:デプロイメントのスケールアウト先となるポッドの最大数を指定します。

    • 最小レプリカ数:デプロイメントのスケールイン先となるポッドの最小数を指定します。

  8. 詳細設定ステップの右下隅にある作成をクリックして、HPA が有効なアプリケーションを作成します。

kubectl の使用

オーケストレーションテンプレートを使用して HPA をデプロイし、HPA を有効にするデプロイメントに HPA を関連付けることもできます。その後、kubectl コマンドを実行して HPA を有効にできます。

次の例では、NGINX アプリケーションに対して HPA が有効になっています。

  1. nginx.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    例:

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx  
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/nginx:1.7.9 # 正確な <image_name:tags> に置き換えてください
            ports:
            - containerPort: 80
            resources:
              requests:                         ## HPA を実行するには、このパラメーターが必要です。
                cpu: 500m
  2. 次のコマンドを実行して、NGINX アプリケーションを作成します。

    kubectl apply -f nginx.yaml
  3. hpa.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    scaleTargetRef パラメーターを使用して、HPA を nginx デプロイメントに関連付けます。

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # デプロイメントのスケールイン先となるポッドの最小数。値は 1 以上の整数である必要があります。
      maxReplicas: 10 # デプロイメントのスケールアウト先となるポッドの最大数。値は minReplicas の値よりも大きい必要があります。
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # 平均リソース使用率。これは、平均リソース使用量と要求されたリソース量の比率です。
                   
  4. 次のコマンドを実行して、HPA をデプロイします。

    kubectl apply -f hpa.yaml
  5. HPA をデプロイした後、kubectl describe hpa <HPA 名> コマンドを再度実行します。

    次の出力が返された場合、HPA は想定どおりに実行されています。

     Type    Reason             Age    From                       Message
      ----    ------             ----   ----                       -------
      Normal  SuccessfulRescale  4m53s  horizontal-pod-autoscaler  New size: 1; reason: すべてのメトリックが目標値を下回っています

参考資料

Cron Horizontal Pod Autoscaler (CronHPA) の詳細については、CronHPA を参照してください。