TKG クラスタ ノードのサイズを設定するには、仮想マシン クラスを指定します。TKG にはデフォルトのクラスが用意されていますが、ユーザーが独自のクラスを作成できます。クラスを使用するには、そのクラスをターゲット vSphere 名前空間 に関連付けて、TKG クラスタのマニフェストでクラスを参照します。

仮想マシン クラスについて

仮想マシン クラスは、CPU やメモリ (RAM) などの仮想マシン (VM) の処理能力を確保するためのリソース予約の要求です。たとえば、「guaranteed-large」という名前の仮想マシン クラス タイプは、4 個の CPU と 16 GB の RAM を予約します。
注: 仮想マシンのディスク サイズは、仮想マシン クラスの定義ではなく、OVA テンプレートによって設定されます。 Tanzu Kubernetes リリース の場合、ディスク サイズは 16 GB になります。
仮想マシン クラスには、保証型とベスト エフォート型という 2 つの予約タイプがあります。保証型のクラスは、構成したリソースをすべて予約します。つまり、指定したクラスタで spec.policies.resources.requestsspec.hardware の設定が一致します。ベスト エフォート型のクラスでは、リソースをオーバーコミットできます。本番環境のワークロードでは、保証型の仮想マシン クラス タイプの使用をお勧めします。
注意: ベスト エフォート型の仮想マシン クラス タイプではリソースをオーバーコミットできるため、TKG クラスタをデプロイする vSphere 名前空間 に制限を設定していてもリソースを使い果たす可能性があります。競合が発生し、制御プレーンが影響を受けると、クラスタの実行が停止する場合があります。そのため本番クラスタには保証型の仮想マシン クラス タイプを使用します。すべての本番ノードに保証型の仮想マシン クラス タイプを使用できない場合は、少なくとも制御プレーン ノードに使用してください。

デフォルトの仮想マシン クラス

表には、Tanzu Kubernetes クラスタ ノードのデプロイ サイズとして使用される、デフォルトの仮想マシンのクラス タイプが一覧表示されています。

リソースのオーバーコミットを回避するには、本番ワークロードで保証されたクラス タイプを使用する必要があります。環境(開発、テスト、本番)にワークロードをデプロイしている場合にメモリ不足を回避するには、ワーカー ノードに小さなクラス サイズまたは極端に小さなクラス サイズを使用しないでください。

表 1. デフォルトの仮想マシン クラス
クラス CPU メモリ (GB) 予約済みの CPU とメモリ
guaranteed-8xlarge 32 128 はい
best-effort-8xlarge 32 128 なし
guaranteed-4xlarge 16 128 はい
best-effort-4xlarge 16 128 なし
guaranteed-2xlarge 8 64 はい
best-effort-2xlarge 8 64 なし
guaranteed-xlarge 4 32 はい
best-effort-xlarge 4 32 なし
guaranteed-large 4 16 はい
best-effort-large 4 16 なし
guaranteed-medium 2 8 はい
best-effort-medium 2 8 なし
guaranteed-small 2 4 はい
best-effort-small 2 4 なし
guaranteed-xsmall 2 2 はい
best-effort-xsmall 2 2 なし

TKG クラスタでの仮想マシン クラスの使用

TKG クラスタで仮想マシン クラスを使用するには、このクラスタがプロビジョニングされている vSphere 名前空間 に仮想マシン クラスをバインドする必要があります。この操作を行うには、仮想マシン クラスをターゲット名前空間に関連付けます。スーパーバイザー上の TKG クラスタのための vSphere 名前空間の構成を参照してください。

ターゲット vSphere 名前空間 で使用可能な仮想マシン クラスを一覧表示するには、 kubectl get virtualmachineclassbinding コマンドを使用します。
注: kubectl describe virtualmachineclasses コマンドは、 スーパーバイザー にあるすべての仮想マシン クラスを返します。ただし、クラスタのプロビジョニングに使用できるのはバインドされたクラスのみであるため、このコマンドは情報を得る目的にのみ使用できます。
仮想マシン クラスの定義は変更できません。すべての仮想マシンは、 デフォルトの仮想マシン クラス定義を含めて、編集することができます。仮想マシン クラスを編集した場合、既存の TKG クラスタ ノードは影響を受けません。新しい TKG クラスタでは、変更されたクラスが使用されます。
注意: TKG クラスタで使用されている仮想マシン クラスを編集し、そのクラスタをスケール アウトした場合、新しいノードは編集されたクラス定義を使用しますが、既存のノードは最初のクラス定義を使用するため、クラスの不一致が発生します。

vSphere with Tanzu は、TKG クラスタで使用するカスタム仮想マシン クラスをサポートします。カスタム仮想マシン クラスを定義したら、クラスタで使用する前に、ターゲット vSphere 名前空間 に関連付ける必要があります。詳細については、スーパーバイザー サービスのドキュメントを参照してください。