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

:自動スケーリングの設定

最終更新日:Nov 20, 2024

このトピックでは、登録済みクラスターの自動スケーリングを設定する方法について説明します。

前提条件

自動スケーリングを設定すると、cluster-autoscalerコンポーネントが登録済みクラスターにデプロイとして自動的にデプロイされます。 スケールアウトイベント中にクラスタに追加されたクラウドコンピューティングノードは、後にスケールインイベントで削除することができる。 これらのノードにデプロイメントとして実行されるシステムコンポーネントをインストールすると、システムコンポーネントが安定したサービスを提供できない場合があります。 したがって、これらのコンポーネントがクラウドコンピューティングノードまたはオンプレミスノードを自動的に追加するようにスケジュールされていないことを確認する必要があります。 次の要件を満たす必要があります。

ステップ1: 自動スケーリングの有効化

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. [ノードプール] ページで、[自動スケーリングの設定] の右側にある [有効化] をクリックします。 [Auto Scalingの設定] パネルでパラメーターを設定し、[OK] をクリックします。

  4. cluster-autoscalerコンポーネントを設定します。

    自動スケーリングを設定すると、クラスターにデプロイが自動的にデプロイされます。

    1. 次のコマンドを実行して、配置を照会します。

      kubectl -n kube-system get deploy |grep cluster-autoscaler

      期待される出力:

      cluster-autoscaler            1/1     1            1           5s
    2. cluster-autoscalerコンポーネントが他のリソースにアクセスできるようにするRAMポリシーを設定します。 サンプルコードは次のとおりです。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ess:DescribeScalingGroups",
                      "ess:DescribeScalingInstances",
                      "ess:DescribeScalingActivities",
                      "ess:DescribeScalingConfigurations",
                      "ess:DescribeScalingRules",
                      "ess:DescribeScheduledTasks",
                      "ess:DescribeLifecycleHooks",
                      "ess:DescribeNotificationConfigurations",
                      "ess:DescribeNotificationTypes",
                      "ess:DescribeRegions",
                      "ess:CreateScalingRule",
                      "ess:ModifyScalingGroup",
                      "ess:RemoveInstances",
                      "ess:ExecuteScalingRule",
                      "ess:ModifyScalingRule",
                      "ess:DeleteScalingRule",
                      "ecs:DescribeInstanceTypes",
                      "ess:DetachInstances",
                      "ess:ScaleWithAdjustment",
                      "vpc:DescribeVSwitches"
                  ],
                  "Resource": [
                      "*"
                  ],
                  "Effect": "Allow"
              }
          ]
      }
    3. 次のコマンドを実行して、RAMポリシーの付与に使用するAccessKeyペアを指定します。

      export ACCESS_KEY_ID=<ACCESS KEY ID>
      export ACCESS_KEY_SECRET=<ACCESS KEY SECRET>
    4. という名前のシークレットを作成するには、次のコマンドを実行します。alibaba-addon-secret.

      kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=${ACCESS_KEY_ID}' --from-literal='access-key-secret=${ACCESS_KEY_SECRET}'

ステップ2: 自動スケーリング用のノードプールを作成する

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. [ノードプール] ページの右上隅にある [ノードプールの作成] をクリックします。

  4. [ノードプールの作成] ダイアログボックスで、ノードプールのパラメーターを設定します。 次に、[注文の確認] をクリックします。

    次の表に、いくつかのパラメーターを示します。 パラメーターの詳細については、「ノードプールの作成」をご参照ください。

    パラメーター

    説明

    期待されるノード

    ノードプールが維持するノードの数。 このパラメーターを変更して、ノードプール内のノード数を調整できます。 ノードプールにノードを作成しない場合は、このパラメーターを0に設定します。 詳細については、「ノードプールのスケーリング」をご参照ください。

    オペレーティングシステム

    ノードのオペレーティングシステム。 CentOSおよびAlibaba Cloud Linuxオペレーティングシステムがサポートされています。

    ECSラベル

    ECSインスタンスにラベルを追加します。

    テインツ

    ノードプール内のノードにテイントを追加します。

    ノードラベル

    ノードプール内のノードにラベルを追加します。 例: workload=auto

    カスタムセキュリティグループ

    ノードが属するセキュリティグループを選択します。

  5. 次のコマンドを実行して、ノードラベルワークロード=autoはノードプールに作成できます。

    kubectl run nginx --image nginx -l workload=auto