与使用其他 tanzu
命令相比,对使用 ClusterClass
定义的集群使用 tanzu cluster node-pool
命令时,行为存在差异。在针对基于 ClusterClass
的集群运行时,所有这些 API 的共同点是需要更新集群,尤其是集群拓扑。
tanzu cluster node-pool delete
tanzu cluster node-pool delete
命令是最直接的更改。此时将更新集群资源,以移除具有传递到删除 API 的节点池名称的计算机部署定义。API 仍禁止删除集群中的最终节点池。
tanzu cluster node-pool delete tkg-wc-vsphere -n md–0
tanzu cluster node-pool list
tanzu 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
的集群中的节点池上更新的属性可分为两种类型:
ClusterClass
级别的变量定义。部署基于 ClusterClass
的集群时,集群定义必须指定许多这样的变量,默认情况下,这些变量会应用于所有计算机部署。计算机部署拓扑允许在计算机部署的基础上覆盖这些变量。可以修改的属性的权威来源是 ClusterClass
对象本身。TKG ClusterClass
对象均定义了包含工作节点虚拟机属性的 worker
变量。这分别包括 AWS 和 Azure 的 instanceType
和 vmSize
。vSphere 版本包括 diskGiB
、memoryMiB
和 numCPU
的属性。具有主管的 TKG 为 vmClass
和 storageClass
定义了顶级变量,并为 nodePoolVolumes
定义了一个数组,用于自定义工作节点。vSphere 上的 TKG 还定义了 vcenter
变量,用于更新与 vCenter Server 实例相关的属性。
所有 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
创建一个新节点池创建节点池可以遵循以下两个路径之一。您可以提供 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