Alibaba Cloud Container Compute Service (ACS) コンソールまたは kubectl を使用して、Horizontal Pod Autoscaler (HPA) を有効にしたアプリケーションを作成できます。このトピックでは、ACS クラスターで HPA を有効にしたアプリケーションを作成する方法と、HPA をテストする方法について説明します。
前提条件
ACS クラスターが作成されていること。詳細については、ACS クラスターの作成を参照してください。
kubectl クライアントがクラスターに接続されていること。詳細については、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続するを参照してください。
HPA を有効にしたアプリケーションの作成
ACS コンソールの使用
ACS コンソールにログオンします。左側のナビゲーションペインで、クラスターをクリックします。
クラスターページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、
を選択します。デプロイメントタブで、イメージから作成をクリックします。
基本情報ステップで、アプリケーションの名前を入力し、パラメーターを設定して、次へをクリックします。
パラメーター
説明
名前空間
アプリケーションが属する名前空間を選択します。デフォルトの名前空間が自動的に選択されます。
名前
アプリケーションの名前を入力します。
レプリカ
アプリケーションにプロビジョニングするポッドの数。デフォルト値:2。
タイプ
リソースオブジェクトのタイプ。有効な値:デプロイメント、StatefulSet、ジョブ、CronJob。
ラベル
アプリケーションを識別するためにアプリケーションに追加するラベル。
アノテーション
アプリケーションに追加するアノテーション。
インスタンスタイプ
ポッドのインスタンスタイプ。有効な値:汎用、BestEffort、パフォーマンス向上。
コンテナーステップで、コンテナーパラメーターを設定し、イメージを選択して、必要なコンピューティングリソースを設定します。次へをクリックします。詳細については、コンテナーの設定を参照してください。
説明デプロイメントに必要なコンピューティングリソースを設定する必要があります。設定しないと、HPA を有効にできません。
アクセス制御 セクションの 詳細設定 ステップで、作成 をクリックしてサービスを作成します。詳細については、詳細設定 を参照してください。
詳細設定ステップで、有効にするHPA のを選択し、スケーリングのしきい値と関連設定を構成します。
メトリック:CPU 使用率またはメモリ使用率を選択します。選択したリソースタイプは、「必要なリソース」パラメーターで指定したものと同じである必要があります。
条件:リソース使用率のしきい値を指定します。HPA は、しきい値を超えるとスケーリングイベントをトリガーします。水平ポッド自動スケーリングの実行に使用されるアルゴリズムの詳細については、アルゴリズムの詳細を参照してください。
最大レプリカ数:デプロイメントのスケールアウト先となるポッドの最大数を指定します。
最小レプリカ数:デプロイメントのスケールイン先となるポッドの最小数を指定します。
詳細設定ステップの右下隅にある作成をクリックして、HPA が有効なアプリケーションを作成します。
kubectl の使用
オーケストレーションテンプレートを使用して HPA をデプロイし、HPA を有効にするデプロイメントに HPA を関連付けることもできます。その後、kubectl コマンドを実行して HPA を有効にできます。
次の例では、NGINX アプリケーションに対して HPA が有効になっています。
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
次のコマンドを実行して、NGINX アプリケーションを作成します。
kubectl apply -f nginx.yaml
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 # 平均リソース使用率。これは、平均リソース使用量と要求されたリソース量の比率です。
次のコマンドを実行して、HPA をデプロイします。
kubectl apply -f hpa.yaml
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 を参照してください。