Alibaba Cloud Container Compute Service (ACS) では、コンソールまたは kubectl を使用して、Horizontal Pod Autoscaling (HPA) をサポートするアプリケーションを作成できます。HPA は、リソース使用率に基づいて Pod のレプリカ数を自動的に調整し、アプリケーションが需要に合わせてスケーリングされるようにします。このトピックでは、HPA が有効なアプリケーションを作成し、その自動スケーリング動作を検証する方法について説明します。
前提条件
HPA をサポートするアプリケーションの作成
コンソール
ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
Deployments ページで、[イメージから作成] をクリックします。
[基本情報] ページで、アプリケーション名を入力し、[次へ] をクリックします。
パラメーター
説明
名前空間
アプリケーションをデプロイする名前空間を選択します。デフォルトでは、default 名前空間が選択されています。
アプリケーション名
アプリケーションの名前を入力します。
レプリカ数
アプリケーションの Pod の初期数を指定します。デフォルトは 2 です。
ワークロード
ワークロードタイプで[ステートレス]、[ステートフル]、[タスク]、または[定時タスク] を選択します。
ラベル
アプリケーションを識別および整理するためのラベルを追加します。
アノテーション
アプリケーションにメタデータをアタッチするためのアノテーションを追加します。
インスタンスタイプ
Pod インスタンスタイプとして、[汎用]、[ベストエフォート]、または [コンピューティング最適化] を選択します。
[コンテナー設定] ページで、コンテナーの設定、イメージの選択、リソース要件の指定を行います。その後、[次へ] をクリックします。詳細については、「コンテナー設定」をご参照ください。
説明デプロイメントのリソースリクエストを指定する必要があります。リソースリクエストが定義されていない場合、HPA はコンテナーをスケーリングできません。
[詳細設定] ページの [アクセス設定] セクションで、[作成] をクリックしてサービス設定を構成します。詳細については、「詳細設定」をご参照ください。
[詳細設定] ページで、[メトリックベースのスケーリング] を [有効化] に設定し、スケーリングパラメーターを構成します。
右下隅の [作成] をクリックします。これで、HPA が有効なデプロイメントが作成されます。
kubectl
kubectl を使用して、YAML マニフェストから HPA リソースを作成できます。HPA リソースは、ターゲットのデプロイメントを参照してスケーリングします。
次の例では、Nginx アプリケーションに HPA を設定する方法を示します。
nginx.yaml という名前のファイルを作成し、次のデプロイメントマニフェストを追加します。
このマニフェストは、CPU リソースリクエストを持つ Nginx デプロイメントを定義します。
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.yamlhpa.yaml という名前のファイルを作成し、次の HPA マニフェストを追加します。
scaleTargetRef フィールドは、HPA がモニターおよびスケーリングするデプロイメントを指定します。この例では、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 # ターゲットの CPU 使用率 (%)次のコマンドを実行して、HPA リソースを作成します。
kubectl apply -f hpa.yaml次のコマンドを実行して、HPA が正しく動作していることを確認します。
kubectl describe hpa nginx-hpaHPA が正しく実行されている場合、次のような出力が表示されます:
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target