ノード数を変更するか、ノードをホストする仮想マシン クラスを垂直方向に変更することで、Tanzu Kubernetes クラスタを水平方向にスケーリングできます。

サポートされているスケーリング操作

次の表に、 Tanzu Kubernetes クラスタでサポートされているスケーリング操作を示します。
表 1. Tanzu Kubernetes クラスタでサポートされているスケーリング操作
ノード 水平方向のスケール アウト 水平方向のスケール イン 垂直方向のスケーリング
制御プレーン はい なし はい
ワーカー はい はい はい
次の考慮事項に留意してください。
  • クラスタ ノードを垂直方向にスケーリングするときに、使用可能なリソースが不足していると、ノード上でワークロードを実行できなくなる可能性があります。このため、水平方向にスケーリングする方法が推奨されることがあります。
  • 仮想マシン クラスは変更できません。Tanzu Kubernetes クラスタで使用される仮想マシン クラスを編集した後に、このクラスタをスケール アウトした場合、新しいクラスタ ノードは更新されたクラス定義を使用しますが、既存のクラスタ ノードは初期のクラス定義を引き続き使用するため、不一致が生じます。Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。

スケーリングの前提条件:Kubectl 編集の構成

Tanzu Kubernetes クラスタを拡張するには、kubectl edit tanzukubernetescluster/CLUSTER-NAME コマンドを使用してクラスタ マニフェストを更新します。kubectl edit コマンドを実行すると、KUBE_EDITOR または EDITOR の環境変数によって定義されたテキスト エディタ内にクラスタ マニフェストが開きます。環境変数を設定する手順については、Kubectl のデフォルトのテキスト エディタの指定を参照してください。

マニフェストの変更を保存すると、 kubectl から編集内容が正常に記録されたことが報告され、この変更内容を使用してクラスタが更新されます。
kubectl edit tanzukubernetescluster/tkgs-cluster-1
tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
キャンセルするには、保存せずにエディタを閉じます。
kubectl edit tanzukubernetescluster/tkgs-cluster-1
Edit cancelled, no changes made.

制御プレーンのスケール アウト

制御プレーン ノードの数を 1 から 3 に増やすことで、 Tanzu Kubernetes クラスタをスケール アウトできます。制御プレーン ノードの数は奇数にする必要があります。制御プレーンではスケーリングできません。
  1. スーパーバイザー クラスタ で認証します。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context tkgs-cluster-ns
  3. この名前空間で実行されている Kubernetes クラスタを一覧表示します。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. ターゲット クラスタで実行されているノードの数を取得します。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    たとえば、次のクラスタには、1 台の制御プレーン ノードと、3 台のワーカー ノードが含まれています。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      1               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. kubectl edit コマンドを使用して、編集するクラスタ マニフェストをロードします。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。

  6. spec.topology.controlPlane.count パラメータを特定し、ノードの数を 1 から 3 に増やします。
    ...
    controlPlane:
        count: 1
    ...
    
    ...
    ControlPlane:
        count: 3
    ...
    
  7. 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。

    ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドでは、スーパーバイザー クラスタ仮想マシン サービス によって新しいワーカー ノードがプロビジョニングされます。

  8. 新しいノードが追加されていることを確認します。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    スケール アウト制御プレーンのノード数が 3 になりました。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

ワーカー ノードのスケール アウト

kubectl を使用してワーカー ノードの数を増やすことで、Tanzu Kubernetes クラスタをスケール アウトできます。

  1. スーパーバイザー クラスタ で認証します。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context tkgs-cluster-ns
  3. この名前空間で実行されている Kubernetes クラスタを一覧表示します。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. ターゲット クラスタで実行されているノードの数を取得します。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    たとえば、次のクラスタには、3 台の制御プレーン ノードと、3 台のワーカー ノードが含まれています。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. kubectl edit コマンドを使用して、編集するクラスタ マニフェストをロードします。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。

  6. spec.topology.workers.count パラメータを特定し、ノードの数を増やします。
    ...
    workers:
        count: 3
    ...
    
    ...
    workers:
        count: 4
    ...
    
  7. 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。

    ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドでは、スーパーバイザー クラスタ仮想マシン サービス によって新しいワーカー ノードがプロビジョニングされます。

  8. 新しいワーカー ノードが追加されていることを確認します。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    スケール アウト後、クラスタ内のワーカー ノード数は 4 になります。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               4        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

ワーカー ノードのスケール イン

ワーカー ノードの数を減らすことで、Tanzu Kubernetes クラスタをスケール インできます。制御プレーンのスケーリングはサポートされていません。

  1. スーパーバイザー クラスタ で認証します。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context tkgs-cluster-ns
  3. この名前空間で実行されている Kubernetes クラスタを一覧表示します。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. ターゲット クラスタで実行されているノードの数を取得します。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    たとえば、次のクラスタには、3 台の制御プレーン ノードと、3 台のワーカー ノードが含まれています。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               4        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. kubectl edit コマンドを使用して、編集するクラスタ マニフェストをロードします。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。

  6. spec.topology.workers.count パラメータを特定し、ノードの数を増やします。
    ...
    workers:
        count: 4
    ...
    
    ...
    workers:
        count: 2
    ...
    
  7. 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。

    ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドでは、スーパーバイザー クラスタ仮想マシン サービス によって新しいワーカー ノードがプロビジョニングされます。

  8. ワーカー ノードが削除されたことを確認します。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    スケール イン後、クラスタ内のワーカー ノード数は 2 になります。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               2        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

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

クラスタ ノードのホストに使用されている仮想マシンのクラスを変更することで、Tanzu Kubernetes クラスタを垂直方向にスケーリングできます。垂直方向のスケーリングは、制御プレーンノードとワーカー ノードの両方でサポートされています。

Tanzu Kubernetes Grid サービス は、サービスに組み込まれているローリング アップデート メカニズムを使用して、クラスタ ノードの垂直方向のスケーリングをサポートします。VirtualMachineClass の定義を変更すると、この新しいクラスを使用して新しいノードがロール アウトされて、古いノードがスピン ダウンされます。Tanzu Kubernetes クラスタの更新を参照してください。

  1. スーパーバイザー クラスタ で認証します。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context tkgs-cluster-ns
  3. この名前空間で実行されている Kubernetes クラスタを一覧表示します。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. ターゲット Tanzu Kubernetes クラスタを記述し、仮想マシンのクラスを確認します。
    kubectl describe tanzukubernetescluster tkgs-cluster-2

    たとえば、次のクラスタでは best-effort-small 型の仮想マシン クラスが使用されています。

    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-small
          ...
        Workers:
          Class:          best-effort-small
          ...
    
  5. 使用可能な仮想マシン クラスを一覧表示して、記述します。
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    注: 使用する仮想マシン クラスを、 vSphere 名前空間 にバインドする必要があります。 Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。
  6. ターゲット クラスタのマニフェスト開いて編集します。
    kubectl edit tanzukubernetescluster/tkgs-cluster-2

    クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。

  7. 仮想マシン クラスを変更して、マニフェストを編集します。
    たとえば、制御プレーン ノードとワーカー ノードに guaranteed-xlarge 仮想マシン クラスを使用するように、クラスタ マニフェストを編集します。
    spec:
      topology:
        controlPlane:
          class: guaranteed-xlarge
          ...
        workers:
          class: guaranteed-xlarge
          ...
    
  8. 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。

    ファイルを保存すると、kubectl によって変更がクラスタに適用されます。Tanzu Kubernetes Grid サービス はバックグラウンドで新しいノードをプロビジョニングし、古いノードを削除します。ローリング アップデート プロセスの説明については、Tanzu Kubernetes Grid サービス クラスタの更新についてを参照してください。

  9. クラスタが更新されていることを確認します。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   21h   updating