Horizontal Pod Autoscaler (HPA) は、リソース使用率に基づいて Pod のレプリカ数を自動的に調整します。 Container Service for Kubernetes (ACK) では、コンソールまたは kubectl を使用して、アプリケーションの HPA を有効にできます。
前提条件
-
ACS クラスターが作成されていること。詳細については、ACS クラスターを作成する を参照してください。
-
kubectl クライアントがクラスターに接続されていること。詳細については、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する を参照してください。
HPA が有効なアプリケーションの作成
コンソールの使用
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、 を選択します。
デプロイメント タブで、イメージから作成 をクリックします。
-
基本情報 ページで、アプリケーションパラメーターを設定し、次 をクリックします。
パラメーター
説明
Namespace
アプリケーションの Namespace。デフォルトは
defaultです。Application Name
アプリケーションの名前。
Replicas
アプリケーションの Pod の数。デフォルト:2。
Workload
ワークロードの種類。 デプロイメント、ステーフルセット、ジョブ、または タイミングタスク を選択します。
Labels
アプリケーションを識別するためのラベル。
Annotations
アプリケーションのアノテーション。
Instance Type
Pod のインスタンスタイプ。汎用タイプ、[BestEffort]、または パフォーマンスタイプ を選択します。
-
コンテナー ページで、コンテナーを設定し、イメージを選択して、リソース要求を指定します。次に、次 をクリックします。 詳細については、「コンテナーの設定」をご参照ください。
説明HPA では、Deployment にリソース要求を指定する必要があります。
-
[Advanced] ページの アクセス制御 セクションで、Service の横にある 作成する をクリックし、Service パラメーターを設定します。 詳細については、「高度な設定」をご参照ください。
-
[Advanced] ページで、HPA で [Enable] を選択し、スケーリングパラメーターを設定します。
-
メトリック:サポートされているメトリックは CPU とメモリです。設定された必須リソースタイプと一致する必要があります。
-
[トリガ条件:]リソース使用率 (%)。使用率がこの値を超えると、コンテナーはスケールアウトします。 Horizontal Pod Autoscaling アルゴリズムの詳細については、「アルゴリズムの詳細」をご参照ください。
-
[最大レプリカ]:Deployment が実行できるレプリカの最大数。
-
[最小レプリカ]:レプリカ数の下限。
-
-
作成する をクリックして、HPA が有効な Deployment を作成します。
kubectl の使用
kubectl とオーケストレーションテンプレートを使用して HPA オブジェクトを作成し、それを Deployment にバインドすることもできます。
次の例では、NGINX アプリケーションを使用します。
-
次の内容の nginx.yaml ファイルを作成し、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)」をご参照ください。