Horizontal Pod Autoscaler (HPA) は、リソース使用率に基づいて Pod レプリカの数を自動的に調整します。Container Service for Kubernetes (ACK) では、コンソールまたは kubectl を使用して、アプリケーションの HPA を有効にできます。
前提条件
-
ACS クラスターが作成されていること。詳細については、ACS クラスターを作成する を参照してください。
-
kubectl クライアントがクラスターに接続されていること。詳細については、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する を参照してください。
HPA 対応アプリケーションの作成
コンソールの使用
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、 を選択します。
デプロイメント タブで、イメージから作成 をクリックします。
-
Basic Information ページで、アプリケーションパラメーターを設定し、 Next をクリックします。
パラメーター
説明
名前空間
アプリケーションの名前空間です。デフォルトは
defaultです。アプリケーション名
アプリケーションの名前です。
レプリカ
アプリケーションの Pod 数です。デフォルトは 2 です。
ワークロード
ワークロードのタイプです。Deployments、StatefulSets、Jobs、または CronJobs から選択します。
ラベル
アプリケーションを識別するためのラベルです。
アノテーション
アプリケーションのアノテーションです。
インスタンスタイプ
Pod のインスタンスタイプです。汎用タイプ、[BestEffort]、または パフォーマンスタイプ から選択します。
-
Container ページでコンテナーを設定し、イメージを選択して、リソースリクエストを指定します。次に、 Next をクリックします。詳細については、「コンテナー設定」をご参照ください。
説明HPA では、Deployment にリソースリクエストを指定する必要があります。
-
[Advanced] ページで、 アクセス制御 セクションの Service の横にある Create をクリックし、Service パラメーターを設定します。詳細については、「高度な設定」をご参照ください。
-
[Advanced] ページで、 HPA で [Enable] を選択し、スケーリングパラメーターを設定します。
-
メトリック:サポートされているメトリックは CPU とメモリーです。設定したリソースリクエストと一致する必要があります。
-
[トリガ条件:]:リソース使用率 (%) です。使用率がこの値を超えると、コンテナーはスケールアウトします。Horizontal Pod Autoscaling アルゴリズムの詳細については、「アルゴリズムの詳細」をご参照ください。
-
[最大レプリカ]:Deployment のレプリカの最大数です。
-
[最小レプリカ]:レプリカ数の下限です。
-
-
Create をクリックして、HPA 対応の Deployment を作成します。
kubectl の使用
オーケストレーションテンプレートと kubectl を使用して HPA オブジェクトを作成し、Deployment にバインドすることもできます。
次の例では、NGINX アプリケーションを使用します。
-
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 # 実際のイメージ名とタグに置き換えてください ports: - containerPort: 80 resources: requests: ## HPA に必須です。 cpu: 500m -
次のコマンドを実行して、NGINX アプリケーションをデプロイします。
kubectl apply -f nginx.yaml -
hpa.yamlファイルを次の内容で作成し、HPA を定義します。scaleTargetRef フィールドは、HPA がスケーリングするリソースを指定します。この例では、nginx Deployment をターゲットにしています。
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 # すべての Pod にわたるターゲット平均使用率。(平均使用量 / 要求量) として計算されます。 -
次のコマンドを実行して HPA を作成します。
kubectl apply -f hpa.yaml -
HPA が作成されたら、
kubectl describe hpa <HPA_NAME>を実行します。次の出力は、HPA が正常に動作していることを示します。
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
関連情報
スケジュールされたオートスケーリングについては、「Cron Horizontal Pod Autoscaler (CronHPA)」をご参照ください。