ClusterClass 定義を使用するクラスタに対して tanzu cluster node-pool コマンドを使用する場合の動作は、他の tanzu コマンドを使用する場合の動作とは異なります。ClusterClass ベースのクラスタに対して動作する場合、これらすべての API の共通点の 1 つは、クラスタ、特にクラスタ トポロジを更新する必要があることです。
tanzu cluster node-pool deletetanzu cluster node-pool delete コマンドは最も簡単な変更です。クラスタ リソースが更新され、削除 API に渡されるノード プールの名前を使用するマシン展開の定義が削除されます。API は、クラスタ内の最後のノード プールの削除を引き続き禁止します。
tanzu cluster node-pool delete tkg-wc-vsphere -n md–0
tanzu cluster node-pool listtanzu cluster node-pool list コマンドは MachineDeployment リソースをプランベースのクラスタの場合と同じ方法で取得し、これらのリソースをクラスタ トポロジ内のマシン展開と照合します。これにより、tanzu cluster node-pool list コマンドは、クラスター トポロジで定義されているマシンの展開に一致するように、名前が更新された同じ MachineDeployment リソースを返すことができます。
tanzu cluster node-pool list tkg-wc-vsphere
NAME NAMESPACE PHASE REPLICAS READY UPDATED UNAVAILABLE
md-0 default Ready 1 1 1 0
ClusterClass ベースのクラスタのノード プールで更新できるプロパティは、次の 2 つのタイプに分類できます。
ClusterClass レベルでの変数の定義に依存する変数オーバーライド。ClusterClass に基づいてクラスタを展開する場合、クラスタ定義でこれらの変数の数を指定する必要があります。これは、デフォルトですべてのマシン展開に適用されます。マシン展開トポロジを使用すると、これらの変数をマシンの展開単位でオーバーライドできます。変更できるプロパティの最終的なソースは、ClusterClass オブジェクト自体です。TKG の ClusterClass オブジェクトはすべて、ワーカー ノード仮想マシンのプロパティを含む変数 worker を定義します。これには、AWS と Azure の instanceType と vmSize がそれぞれ含まれます。vSphere バージョンには、diskGiB、memoryMiB、および numCPU のプロパティが含まれています。スーパーバイザーを使用する TKG は、ワーカー ノードをカスタマイズするための vmClass および storageClass の最上位レベルの変数、および nodePoolVolumes の配列を定義します。vSphere 上の TKG は、vCenter Server インスタンスに関連するプロパティを更新するための vcenter 変数も定義します。
TKG のすべての ClusterClass オブジェクトは、ワーカー ノードに適用するノード ラベルを指定する nodePoolLabels 変数を定義します。
重要Tanzu CLI によって提供される
node-poolコマンドでは、ノード プールの作成と更新をサポートするためにClusterClassで上記の変数を定義する必要があります。カスタムClusterClassを使用する場合、これらの変数は、ClusterClassの最上位の変数定義として必要です。Tanzu CLI を使用して、カスタムClusterClassベースのクラスタでノード プールを取得および削除することができます。tanzu cluster node-pool createとtanzu cluster node-pool updateがカスタムClusterClassオブジェクトに対して機能する特別なケースがあります。これは特に、Tanzu CLI に渡されるノード プール定義で定義される変数が多くてもreplicas、az、name、workerClass、およびtkrResolverの場合です。この場合、workerClassは、カスタムClusterClass内のworkerClass定義と一致する必要があります。
tanzu cluster node-pool set を使用した既存のノード プールの更新既存のノード プールの名前を使用して tanzu cluster node-pool set コマンドを呼び出すと、更新では、指定されたノード プールのレプリカ数とラベル(指定されている場合)のみが変更されます。それ以外の指定されたオプションは無視されます。特に、クラスタのトポロジが新しいレプリカ数と nodePoolLabels 変数オーバーライドで更新されます(これらの値が指定されている場合)。
tanzu cluster node-pool set を使用した新しいノード プールの作成ノード プールの作成は、2 つのパスのいずれかに従って実行できます。新しいノード プールの開始点として使用されるベース マシン展開を、tanzu cluster node-pool set コマンドに提供できます。指定されたベース マシン展開のディープ コピーは、ユーザーが指定するプロパティを階層化する基盤として機能します。通常、これは、コピーされたマシン展開のすべての変数オーバーライドが、指定した新しい値で更新されることを意味します。これは、ベース マシン展開が指定されていない場合とは異なります。この場合、変数オーバーライドはクラスタ トポロジで定義されているグローバル変数定義からコピーされ、それに対してユーザーが指定した値が階層化されます。また、ベース マシン展開を指定しない場合は、workerClass および tkrResolver 定義を指定する必要があります。TKG ClusterClass オブジェクトにはデフォルトで tkg-worker クラスが定義されており、ユーザーが独自のワーカー クラス定義を追加していない限りこのクラスが使用されます。tkrResolver は、tkr-resolver 注釈の値です。
ベース マシン展開を使用して新しいノード プールを作成するには、次のコマンドを実行します。
tanzu cluster node-pool set tkg-wc-vsphere -f /path/to/node-pool.yml –-base-machine-deployment md-0
node-pool.yml ファイルに次の内容が含まれます。
name: np-1
replicas: 1
nodeMachineType: t3.large
ベース マシン展開を使用せずに新しいノード プールを作成するには、次のコマンドを実行します。
tanzu cluster node-pool set tkg-wc-vsphere -f /path/to/node-pool.yml
node-pool.yml ファイルに次の内容が含まれます。
name: np-1
replicas: 1
nodeMachineType: t3.large
workerClass: tkg-worker
tkrResolver: os-name=ubuntu,os-arch=amd64