このトピックでは、次の方法を使用して、Tanzu Kubernetes Grid (TKG) ワークロード クラスタとスタンドアローン管理クラスタをスケーリングする方法について説明します。
オートスケーラ:スタンドアローン管理クラスタによって展開されるワークロード クラスタの場合、クラスタ オートスケーラを使用して、ワーカー ノードの数を需要に合わせて自動的にスケーリングできます。「クラスタ オートスケーラでのワーカー ノードのスケーリング」を参照してください。
オートスケーラでは、スーパーバイザー クラスタによって展開されたワークロード クラスタをスケーリングすることはできません。
水平方向にスケーリングする:ワークロード クラスタまたはスタンドアローン管理クラスタの場合、制御プレーン ノードとワーカー ノードの数を手動でスケーリングできます。「クラスタの水平方向のスケーリング」を参照してください。
垂直方向にスケーリングする:ワークロード クラスタの場合、制御プレーン ノードとワーカー ノードのサイズを手動で変更できます。「クラスタの垂直方向のスケーリング」を参照してください。
注ノード プール内のノードをスケーリングするには、「異なる仮想マシン タイプのノード プールの管理」の「ノード プールの更新」を参照してください。
クラスタ オートスケーラは、ワークロード クラスタの要求に応じて Kubernetes クラスタを自動的にスケーリングする Kubernetes プログラムです。クラスタ オートスケーラは、スタンドアローン管理クラスタによって展開されたワークロード クラスタにのみ使用します。
クラスタ オートスケーラの詳細については、GitHub の次のドキュメントを参照してください。
デフォルトでは、クラスタ オートスケーラは Tanzu Kubernetes Grid で無効になっています。ワークロード クラスタでクラスタ オートスケーラを有効にするには、ENABLE_AUTOSCALER
を true
に設定し、クラスタ構成ファイルで、または環境変数として 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_0
と AUTOSCALER_MAX_SIZE_0
を設定します。prod
クラスタなど、複数のワーカー ノードを持つクラスタの場合は、次のように設定します。
AUTOSCALER_MIN_SIZE_0
と AUTOSCALER_MAX_SIZE_0
AUTOSCALER_MIN_SIZE_1
と AUTOSCALER_MAX_SIZE_1
AUTOSCALER_MIN_SIZE_2
と AUTOSCALER_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-size
と max-size
注釈を MachineDeployment
オブジェクトに手動で追加する必要があります。
kubectl
のコンテキストを管理クラスタに設定します。
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
ここで、MY-MGMT-CLUSTER
は管理クラスタの名前です。
MachineDeployment
オブジェクトを一覧表示し、その AGE
値を書き留めます。
kubectl get md
オブジェクト名は -md
で終わり、その後に各アベイラビリティ ゾーン (AZ) の数字が続きます。
クラスタ内で新しく作成された MachineDeployment
ごとに、次の手順を実行します。
min-size
注釈を追加します。
kubectl annotate machinedeployment MD-NAME cluster.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 に展開される *-md0
の AUTOSCALER_MIN_SIZE_0
値です。max-size
注釈を追加します。
kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
ここで、MAX-SIZE
は上記のように AZ の最大 MachineDeployment
ノード数です。
TKG クラスタは、クラスタ タイプに応じて 2 つの方法で水平方向にスケーリングできます。
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 サーバのドキュメントを参照してください。
スーパーバイザー クラスタを使用する vSphere:vSphere with Tanzu で実行されるクラスタで実行できる制御プレーン ノードは、1 台または 3 台のみとなります。なお、制御プレーン ノードの数を 1 台から 3 台にスケールアップすることはできますが、3 台から 1 台にスケールダウンすることはできません。
ワークロード クラスタを垂直方向にスケーリングする手順は、クラスタ タイプによって異なります。
『The Cluster API Book』の「インフラストラクチャ マシン テンプレートの更新 (Updating Infrastructure Machine Templates)」の手順に従って、クラスタのマシン テンプレートを変更します。
この手順では、kubectl get
コマンドを使用して、クラスタの既存のマシン テンプレートをダウンロードします。これは、次のように構成できます。
kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml
ここで、
MACHINE-TEMPLATE-TYPE
は次のとおりです。
VsphereMachineTemplate
AWSMachineTemplate
AzureMachineTemplate
MACHINE-TEMPLATE-NAME
は、スケーリングするクラスタ ノードのマシン テンプレートの名前で、次の形式になります。
CLUSTER-NAME-control-plane
CLUSTER-NAME-worker
例:
kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml
クラスベースのクラスタを垂直方向にスケーリングするには、以下の「クラスベースのクラスタのスケーリング」の説明に従って、クラスタ定義の machine
設定を変更します。
クラスベースのクラスタを水平方向または垂直方向にスケーリングするには、topology
構成を使用します。
次のように kubectl
を管理クラスタのコンテキストに設定します。
kubectl config use-context management-cluster@admin
kubectl edit cluster CLUSTER-NAME
を実行し、controlPlane
および worker
で topology
ブロックの設定を編集します。
水平方向にスケーリングするには、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