ノード数を変更するか、ノードをホストする仮想マシン クラスを垂直方向に変更することで、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.
制御プレーンのスケール アウト
- スーパーバイザー クラスタ で認証します。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
kubectl config use-context tkgs-cluster-ns
- この名前空間で実行されている Kubernetes クラスタを一覧表示します。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- ターゲット クラスタで実行されているノードの数を取得します。
kubectl get tanzukubernetescluster tkgs-cluster-1
たとえば、次のクラスタには、1 台の制御プレーン ノードと、3 台のワーカー ノードが含まれています。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 1 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
kubectl edit
コマンドを使用して、編集するクラスタ マニフェストをロードします。kubectl edit tanzukubernetescluster/tkgs-cluster-1
クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。
spec.topology.controlPlane.count
パラメータを特定し、ノードの数を 1 から 3 に増やします。... controlPlane: replicas: 1 ...
... ControlPlane: replicas: 3 ...
- 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。
ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドでは、スーパーバイザー クラスタ の 仮想マシン サービス によって新しいワーカー ノードがプロビジョニングされます。
- 新しいノードが追加されていることを確認します。
kubectl get tanzukubernetescluster tkgs-cluster-1
スケール アウト制御プレーンのノード数が 3 になりました。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
ワーカー ノードのスケール アウト
kubectl を使用してワーカー ノードの数を増やすことで、Tanzu Kubernetes クラスタをスケール アウトできます。
- スーパーバイザー クラスタ で認証します。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
kubectl config use-context tkgs-cluster-ns
- この名前空間で実行されている Kubernetes クラスタを一覧表示します。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- ターゲット クラスタで実行されているノードの数を取得します。
kubectl get tanzukubernetescluster tkgs-cluster-1
たとえば、次のクラスタには、3 台の制御プレーン ノードと、3 台のワーカー ノードが含まれています。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
kubectl edit
コマンドを使用して、編集するクラスタ マニフェストをロードします。kubectl edit tanzukubernetescluster/tkgs-cluster-1
クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。
spec.topology.workers.count
パラメータを特定し、ノードの数を増やします。... workers: replicas: 3 ...
... workers: replicas: 4 ...
- 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。
ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドでは、スーパーバイザー クラスタ の 仮想マシン サービス によって新しいワーカー ノードがプロビジョニングされます。
- 新しいワーカー ノードが追加されていることを確認します。
kubectl get tanzukubernetescluster tkgs-cluster-1
スケール アウト後、クラスタ内のワーカー ノード数は 4 になります。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
ワーカー ノードのスケール イン
ワーカー ノードの数を減らすことで、Tanzu Kubernetes クラスタをスケール インできます。制御プレーンのスケーリングはサポートされていません。
- スーパーバイザー クラスタ で認証します。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
kubectl config use-context tkgs-cluster-ns
- この名前空間で実行されている Kubernetes クラスタを一覧表示します。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- ターゲット クラスタで実行されているノードの数を取得します。
kubectl get tanzukubernetescluster tkgs-cluster-1
たとえば、次のクラスタには、3 台の制御プレーン ノードと、4 台のワーカー ノードが含まれています。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
kubectl edit
コマンドを使用して、編集するクラスタ マニフェストをロードします。kubectl edit tanzukubernetescluster/tkgs-cluster-1
クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。
spec.topology.workers.count
パラメータを特定し、ノードの数を減らします。... workers: replicas: 4 ...
... workers: replicas: 2 ...
- 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。
ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドでは、スーパーバイザー クラスタ の 仮想マシン サービス によって新しいワーカー ノードがプロビジョニングされます。
- ワーカー ノードが削除されたことを確認します。
kubectl get tanzukubernetescluster tkgs-cluster-1
スケール イン後、クラスタ内のワーカー ノード数は 2 になります。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 2 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
クラスタの垂直方向のスケーリング
クラスタ ノードのホストに使用されている仮想マシンのクラスを変更することで、Tanzu Kubernetes クラスタを垂直方向にスケーリングできます。垂直方向のスケーリングは、制御プレーンノードとワーカー ノードの両方でサポートされています。
Tanzu Kubernetes Grid サービス は、サービスに組み込まれているローリング アップデート メカニズムを使用して、クラスタ ノードの垂直方向のスケーリングをサポートします。VirtualMachineClass
の定義を変更すると、この新しいクラスを使用して新しいノードがロール アウトされて、古いノードがスピン ダウンされます。Tanzu Kubernetes クラスタの更新を参照してください。
- スーパーバイザー クラスタ で認証します。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes クラスタが実行されている vSphere 名前空間 にコンテキストを切り替えます。
kubectl config use-context tkgs-cluster-ns
- この名前空間で実行されている Kubernetes クラスタを一覧表示します。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- ターゲット Tanzu Kubernetes クラスタを記述し、仮想マシンのクラスを確認します。
kubectl describe tanzukubernetescluster tkgs-cluster-2
たとえば、次のクラスタでは best-effort-medium 型の仮想マシン クラスが使用されています。
Spec: ... Topology: Control Plane: Class: best-effort-medium ... nodePool-a1: Class: best-effort-medium ...
- 使用可能な仮想マシン クラスを一覧表示して、記述します。
kubectl get virtualmachineclassbinding
kubectl describe virtualmachineclassbinding
- ターゲット クラスタのマニフェスト開いて編集します。
kubectl edit tanzukubernetescluster/tkgs-cluster-2
クラスタ マニフェストは、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで開かれます。
- 仮想マシン クラスを変更して、マニフェストを編集します。
たとえば、制御プレーン ノードとワーカー ノードに
guaranteed-large
仮想マシン クラスを使用するように、クラスタ マニフェストを編集します。spec: topology: controlPlane: class: guaranteed-large ... nodePool-a1: class: guaranteed-large ...
- 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。
ファイルを保存すると、kubectl によって変更がクラスタに適用されます。Tanzu Kubernetes Grid サービス はバックグラウンドで新しいノードをプロビジョニングし、古いノードを削除します。ローリング アップデート プロセスの説明については、Tanzu Kubernetes Grid サービス クラスタの更新についてを参照してください。
- クラスタが更新されたことを確認します。
kubectl get tanzukubernetescluster NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
ノード ボリュームのスケーリング
ノードの Tanzu Kubernetes クラスタ仕様には、1 つ以上のパーシステント ボリュームを宣言するオプションがあります。ノード ボリュームの宣言は、制御プレーンの ectd データベースやワーカー ノードのコンテナ ランタイムなど、変更の多いコンポーネントに役立ちます。リファレンスのために、これらの両方のノード ボリュームが宣言されたクラスタ仕様の抜粋を以下に示します。(クラスタ仕様の完全な例は、こちらにあります。)
ボリューム ノード | 説明 |
---|---|
ワーカー ノードのボリュームは変更できます。 |
Tanzu Kubernetes クラスタがプロビジョニングされた後に、ワーカー ノード ボリュームを追加または更新できます。ローリング アップデートを開始すると、クラスタは新しいボリュームまたは変更されたボリュームを使用して更新されます。
注意: 新しいボリュームまたは変更されたボリュームを含むワーカー ノードをスケーリングすると、ローリング アップデート中に現在のボリュームのデータが削除されます。
|
制御プレーン ノードのボリュームは変更できません。 | Tanzu Kubernetes クラスタがプロビジョニングされた後に、制御プレーン ノードのボリュームを追加または更新することはできません。Kubernetes クラスタ API (CAPI) では、クラスタの作成後に spec.toplogy.controlPlane.volumes を変更することはできません。クラスタの作成後に制御プレーン ボリュームを追加または変更しようとすると、要求は拒否され、「変更できないフィールドの更新は許可されていません」というエラー メッセージが表示されます。 |
spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-large storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi