クラスタのスケーリング

このトピックでは、次の方法を使用して、Tanzu Kubernetes Grid (TKG) ワークロード クラスタとスタンドアローン管理クラスタをスケーリングする方法について説明します。

  • オートスケーラ:スタンドアローン管理クラスタによって展開されるワークロード クラスタの場合、クラスタ オートスケーラを使用して、ワーカー ノードの数を需要に合わせて自動的にスケーリングできます。「クラスタ オートスケーラでのワーカー ノードのスケーリング」を参照してください。

    オートスケーラでは、スーパーバイザー クラスタによって展開されたワークロード クラスタをスケーリングすることはできません。

  • 水平方向にスケーリングする:ワークロード クラスタまたはスタンドアローン管理クラスタの場合、制御プレーン ノードとワーカー ノードの数を手動でスケーリングできます。「クラスタの水平方向のスケーリング」を参照してください。

  • 垂直方向にスケーリングする:ワークロード クラスタの場合、制御プレーン ノードとワーカー ノードのサイズを手動で変更できます。「クラスタの垂直方向のスケーリング」を参照してください。

ノード プール内のノードをスケーリングするには、「異なる仮想マシン タイプのノード プールの管理」の「ノード プールの更新」を参照してください。

クラスタ オートスケーラでのワーカー ノードのスケーリング(スタンドアローン MC)

クラスタ オートスケーラは、ワークロード クラスタの要求に応じて Kubernetes クラスタを自動的にスケーリングする Kubernetes プログラムです。クラスタ オートスケーラは、スタンドアローン管理クラスタによって展開されたワークロード クラスタにのみ使用します。

クラスタ オートスケーラの詳細については、GitHub の次のドキュメントを参照してください。

デフォルトでは、クラスタ オートスケーラは Tanzu Kubernetes Grid で無効になっています。ワークロード クラスタでクラスタ オートスケーラを有効にするには、ENABLE_AUTOSCALERtrue に設定し、クラスタ構成ファイルで、または環境変数として AUTOSCALER_ オプションを設定してから、tanzu cluster create --file を実行します。

重要

クラスベースのクラスタの場合、クラスタ API でのラベル伝達の問題により、クラスベースのワークロード クラスタを作成した後、以下の「(最小および最大サイズの注釈の手動追加)」[#cc-workaround] の説明に従って、min-size および max-size 注釈を MachineDeployment オブジェクトに手動で追加して、クラスタ オートスケーラを有効にする必要があります。

クラスタ構成ファイル内のクラスタ オートスケーラ構成変数はそれぞれ、クラスタ オートスケーラ ツールのパラメータに対応します。これらの変数とそのデフォルト値のリストについては、『構成ファイル変数リファレンス』の「クラスタ オートスケーラ」を参照してください。

AUTOSCALER_*_SIZE 設定では、クラスタ内のワーカー ノードの数が制限されますが、AUTOSCALER_MAX_NODES_TOTAL では、ワーカーと制御プレーンの両方の全ノード数が制限されます。

クラスタ内のワーカー ノードの数に応じて、AUTOSCALER_*_SIZE 値を設定します。

  • dev クラスタなど、単一のワーカー ノードを持つクラスタの場合は、AUTOSCALER_MIN_SIZE_0AUTOSCALER_MAX_SIZE_0 を設定します。
  • prod クラスタなど、複数のワーカー ノードを持つクラスタの場合は、次のように設定します。
    • AUTOSCALER_MIN_SIZE_0AUTOSCALER_MAX_SIZE_0
    • AUTOSCALER_MIN_SIZE_1AUTOSCALER_MAX_SIZE_1
    • AUTOSCALER_MIN_SIZE_2AUTOSCALER_MAX_SIZE_2

次に、クラスタ構成ファイルのクラスタ オートスケーラ設定の例を示します。クラスタの展開後にこれらの値を変更することはできません。

#! ---------------------------------------------------------------------
#! Autoscaler related configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
AUTOSCALER_MAX_NODES_TOTAL: "0"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
AUTOSCALER_MIN_SIZE_0:
AUTOSCALER_MAX_SIZE_0:
AUTOSCALER_MIN_SIZE_1:
AUTOSCALER_MAX_SIZE_1:
AUTOSCALER_MIN_SIZE_2:
AUTOSCALER_MAX_SIZE_2:

クラスタ オートスケーラを有効にして作成するワークロード クラスタごとに、Tanzu Kubernetes Grid によって管理クラスタにクラスタ オートスケーラ展開が作成されます。クラスタ オートスケーラを無効にするには、ワークロード クラスタに関連付けられているクラスタ オートスケーラ展開を削除します。

最小および最大サイズの注釈の手動追加

クラスタ API でのラベル伝達の問題により、クラスタ オートスケーラが有効になっているクラスベースのワークロード クラスタを作成した後、次のように min-sizemax-size 注釈を MachineDeployment オブジェクトに手動で追加する必要があります。

  1. kubectl のコンテキストを管理クラスタに設定します。

    kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
    

    ここで、MY-MGMT-CLUSTER は管理クラスタの名前です。

  2. MachineDeployment オブジェクトを一覧表示し、その AGE 値を書き留めます。

    kubectl get md
    

    オブジェクト名は -md で終わり、その後に各アベイラビリティ ゾーン (AZ) の数字が続きます。

  3. クラスタ内で新しく作成された MachineDeployment ごとに、次の手順を実行します。

    1. min-size 注釈を追加します。

      kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
      

      ここで、

      • MD-NAME は、MachineDeployment オブジェクトの名前で、my-wc-md-0 のようになります。
      • MIN-SIZE は、AZ のAUTOSCALER_MIN_SIZE_* 値です。たとえば、最初の AZ に展開される *-md0AUTOSCALER_MIN_SIZE_0 値です。
    2. max-size 注釈を追加します。

      kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
      

      ここで、MAX-SIZE は上記のように AZ の最大 MachineDeployment ノード数です。

クラスタの水平方向のスケーリング

TKG クラスタは、クラスタ タイプに応じて 2 つの方法で水平方向にスケーリングできます。

  • すべてのクラスタ:直後に記載されている説明に従って、Tanzu CLI を使用します。
  • クラスベースのワークロード クラスタ:以下の「クラスベースのクラスタのスケーリング」セクションの説明に従って、クラスタ定義の replicas 設定を変更します。

Tanzu CLI を使用してワークロード クラスタまたはスタンドアローン管理クラスタを水平方向にスケーリングするには、tanzu cluster scale コマンドを実行します。

重要

Tanzu Kubernetes Grid 操作の実行中は、コンテキストを変更したり、.kube-tkg/config ファイルを編集したりしないでください。

  • 制御プレーン ノードとワーカー ノード:--controlplane-machine-count および --worker-machine-count オプションは、それぞれ制御プレーン ノードとワーカー ノードの新しい数を設定します。
  • 例:

    • クラスタを 5 台の制御プレーン ノードと 10 台のワーカー ノードにスケーリングするには:

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
      

      --controlplane-machine-count 1 を使用してクラスタを展開し、3 台の制御プレーン ノードにスケールアップすると、Tanzu Kubernetes Grid は制御プレーン上でスタック HA を自動的に有効にします。

    • クラスタが default 以外の名前空間で実行されている場合は、--namespace オプションを含める必要があります。

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
      
  • スタンドアローン管理クラスタを使用する vSphere:スタンドアローン管理クラスタを使用して展開された vSphere でクラスタのノード数を変更した後、追加または削除されたノードの IP アドレスの DHCP 予約を保持または解放する必要があります。これらの予約を手動で変更するには、「ノードの DHCP 予約とエンドポイント DNS レコードの構成(vSphere のみ)」を参照してください。DHCP 予約の構成方法については、DHCP サーバのドキュメントを参照してください。

  • スーパーバイザー クラスタを使用する vSpherevSphere with Tanzu で実行されるクラスタで実行できる制御プレーン ノードは、1 台または 3 台のみとなります。なお、制御プレーン ノードの数を 1 台から 3 台にスケールアップすることはできますが、3 台から 1 台にスケールダウンすることはできません。

クラスタの垂直方向のスケーリング

ワークロード クラスタを垂直方向にスケーリングする手順は、クラスタ タイプによって異なります。

TKC およびプランベースのクラスタ

The Cluster API Book』の「インフラストラクチャ マシン テンプレートの更新 (Updating Infrastructure Machine Templates)」の手順に従って、クラスタのマシン テンプレートを変更します。

この手順では、kubectl get コマンドを使用して、クラスタの既存のマシン テンプレートをダウンロードします。これは、次のように構成できます。

kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml

ここで、

  • MACHINE-TEMPLATE-TYPE は次のとおりです。
    • vSphere の VsphereMachineTemplate
    • Amazon Web Services (AWS) の AWSMachineTemplate
    • Azure の AzureMachineTemplate
  • MACHINE-TEMPLATE-NAME は、スケーリングするクラスタ ノードのマシン テンプレートの名前で、次の形式になります。
    • 制御プレーン ノードの場合は CLUSTER-NAME-control-plane
    • ワーカー ノードの場合は CLUSTER-NAME-worker

例:

kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml

クラスベースのクラスタ

クラスベースのクラスタを垂直方向にスケーリングするには、以下の「クラスベースのクラスタのスケーリング」の説明に従って、クラスタ定義の machine 設定を変更します。

クラスベースのクラスタのスケーリング

クラスベースのクラスタを水平方向または垂直方向にスケーリングするには、topology 構成を使用します。

  1. 次のように kubectl を管理クラスタのコンテキストに設定します。

    kubectl config use-context management-cluster@admin
    
  2. kubectl edit cluster CLUSTER-NAME を実行し、controlPlane および workertopology ブロックの設定を編集します。

    水平方向にスケーリングするには、replicas 設定を変更します。- 垂直方向にスケーリングするには、machine の設定を変更します。

    例:

    - name: controlPlane
      value:
        replicas: 3
        machine:
          diskGiB: 20
          memoryMiB: 8192
          numCPUs: 4
    - name: worker
      value:
        replicas: 5
        machine:
          diskGiB: 20
          memoryMiB: 8192
          numCPUs: 4
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon