本主题介绍 Tanzu Kubernetes Grid (TKG) 创建的不同类型的工作负载集群,以及如何配置和创建这些集群。
Tanzu Kubernetes Grid 托管三种不同类型的工作负载集群:
Cluster
的 Kubernetes 对象spec.topology
块中定义了基本拓扑
spec.topology.class
值继承配置
ClusterClass
对象class
为 tanzukubernetescluster
class
为 tkg-INFRASTRUCTURE-default-VERSION
,例如 tkg-vsphere-default-v1.0.0
。TanzuKubernetesCluster
的 Kubernetes 对象Cluster
的 Kubernetes 对象请注意,具有 class: tanzukubernetescluster
(全部为小写)的基于类的集群不同于基于 TKC 的集群,这些集群的对象类型为 TanzuKubernetesCluster
。
基于类的集群设计为替换其他两种集群类型,方法是向两种类型的管理集群提供相同的 API:主管集群和独立管理集群。
重要Tanzu Kubernetes Grid v2.4.x 是支持在 AWS 和 Azure 上创建 TKG 工作负载集群的最新 TKG 版本。Tanzu Kubernetes Grid v2.5 版本中将移除在 AWS 和 Azure 上创建 TKG 工作负载集群的功能。有关详细信息,请参见《VMware Tanzu Kubernetes Grid v2.4 发行说明》中的弃用 AWS 和 Azure 上的 TKG 管理和工作负载集群。
要创建和管理工作负载集群,管理集群运行集群 API 软件:
下表将管理集群类型和工作负载集群类型映射到其使用的集群 API 提供程序:
TKG 和… | 使用集群 API 提供程序… | 在...上 | 创建和管理的工作负载集群类型… | 在产品版本中… |
---|---|---|---|---|
主管 | CAPW(专有) | vSphere | 基于类的 Cluster 对象 |
TKG 2.x 和 vSphere with Tanzu 8 |
TanzuKubernetesCluster 对象 |
vSphere with Tanzu 7 和 8 | |||
独立管理集群 | CAPA (OSS) | AWS | 基于类的 Cluster 对象 |
TKG v2.x |
基于计划的 AWSCluster 对象 |
TKG v2.x 和 v1.x | |||
CAPZ (OSS) | Azure | 基于类的 Cluster 对象 |
TKG v2.x | |
基于计划的 AzureCluster 对象 |
TKG v2.x 和 v1.x | |||
CAPV (OSS) | vSphere | 基于类的 Cluster 对象 |
TKG v2.x | |
基于计划的 VSphereCluster 对象 |
TKG v2.x 和 v1.x |
通过随不同版本的 Tanzu Kubernetes Grid 附带的不同版本的 Tanzu CLI,可以创建不同类型的集群,具体取决于您在 AWS 或 Azure 上是使用 vSphere 8 上的主管集群、vSphere 7 上的主管集群,或没有主管的 vSphere 6.7、7 和 8 上的独立管理集群。
CLI 版本 | TKG 版本 | 使用 ... 创建基于类的集群 | 使用 ... 创建基于计划的集群 | 使用 ... 创建 TanzuKubernetesClusters |
||||||
---|---|---|---|---|---|---|---|---|---|---|
独立管理集群 | vSphere 8 上的主管 | vSphere 7 上的主管集群 | 独立管理集群 | vSphere 8 上的主管 | vSphere 7 上的主管集群 | 独立管理集群 | vSphere 8 上的主管 | vSphere 7 上的主管集群 | ||
v0.90.1* | 2.3.0 | ✓ | ✓ | x | ✓ | ✓ | x | x | ✓ | x |
v0.29.0 | 2.2.0 | ✓ | ✓ | x | ✓ | ✓ | x | x | ✓ | x |
v0.28.1 | 2.1.1 | ✓ | ✓ | x | ✓ | ✓ | x | x | ✓ | x |
v0.25.4 | 1.6.1 | x | ✓ | x | ✓ | ✓ | x | x | ✓ | ✓ |
v0.25.0 | 1.6.0 | x | ✓ | x | ✓ | ✓ | x | x | ✓ | ✓ |
v0.11.x | 1.5.x | x | x | x | ✓ | x | x | x | x | ✓ |
* 有关与 Tanzu Kubernetes Grid v2.4 兼容的 CLI 版本的完整列表,请参见产品互操作性矩阵。
基于类的集群具有以下对象类型的高级别层次结构。KubeAdmControlPlane
和 MachineDeployment
底层对象具有相同的类型,但通常是不同的对象:
Cluster
- 由规范中的 topology
块设置的控制平面和工作节点的数量和类型
KubeAdmControlPlane
- 定义控制平面节点
vSphereMachine
、AWSMachine
、DockerMachine
Machine
- 节点虚拟机的通用对象KubeAdmConfig
- Kubernetes 配置,包括 Kubernetes 版本、映像存储库、部署前和部署后 hook 等。MachineDeployment
- 定义工作节点
Machine
KubeAdmConfig
有关详细信息,请参见《集群 API 手册》中的 CustomResourceDefinitions 关系。
根据安装的环境,可以通过多种方式创建 Tanzu Kubernetes Grid 工作负载集群:使用 Tanzu CLI、Tanzu Mission Control 和 kubectl
。
下图概述了用户如何在不同的基础架构上创建不同类型的工作负载集群:
使用… | 创建… | 从以下项获取配置值… | 从以下项配置模板… | 说明 |
---|---|---|---|---|
Tanzu CLI:tanzu cluster create |
基于类的工作负载集群 (vSphere) | Cluster 和底层对象规范 |
用户,例如 classycluster.yaml | 创建基于类的集群 |
TanzuKubernetesCluster 工作负载集群 (vSphere) |
集群配置文件、 本地环境、 (高级) ytt 覆盖网络 |
infrastructure-tkg-service-vsphere * |
(旧版)创建基于计划的集群或 TKC 集群 | |
基于计划的工作负载集群(vSphere、AWS、Azure) | infrastructure-vsphere 、infrastructure-aws 、infrastructure-azure * |
|||
Tanzu Mission Control (TMC) | TanzuKubernetesCluster 或基于计划的工作负载集群 |
TMC UI | 已注册管理集群 | 置备工作负载集群 |
kubectl apply |
基于类或 TanzuKubernetesCluster 的工作负载集群 (vSphere) |
Cluster 和底层对象规范 |
用户,例如 classycluster.yaml、tkc.yaml | 以声明方式创建工作负载集群 |
*本地目录位于 .config/tanzu/tkg/providers/
下
Tanzu CLI 创建基于 TKC 的工作负载集群时,会合并以下各项中的配置值:
~/.config/tanzu/tkg/cluster-config.yaml
或传递到 CLI --file
选项的其他文件~/.config/tanzu/tkg/providers/infrastructure-tkg-service-vsphere
中的集群计划 YAML 配置文件,如下面的计划配置文件中所述。~/.config/tanzu/tkg/providers
下面的其他非计划 YAML 配置文件实时输入应用每次调用特有的配置值,环境变量会将其保留在终端会话上,并且配置文件和覆盖将永久保留这些值。您可以通过上述任何源自定义集群,并提供如下所述的建议和限制。
有关 tanzu
CLI 如何从这些可能发生冲突的多个源派生特定集群配置值的信息,请参见配置值优先级。
~/.config/tanzu/tkg/providers/infrastructure-tkg-service-vsphere
目录包含名为 cluster-template-definition-PLAN.yaml
的 TKC 工作负载集群计划配置文件。每个计划的配置值来自这些文件及其在 spec.paths
下面列出的文件:
tanzu
CLI 附带的文件spec.paths
列表中的自定义文件要通过 YAML 自定义集群计划,请编辑 ~/.config/tanzu/tkg/providers/infrastructure-tkg-service-vsphere
下的文件,但应避免更改其他文件。
要编辑的文件
工作负载集群计划配置文件路径采用 ~/.config/tanzu/tkg/providers/infrastructure-infrastructure-tkg-service-vsphere/VERSION/cluster-template-definition-PLAN.yaml
格式,其中:
VERSION
是配置所使用的集群 API 提供程序模块的版本。PLAN
是 dev
、prod
或自定义计划。每个计划配置文件都有一个 spec.paths
部分,其中列出了源文件和配置集群计划的 ytt
目录。例如:
apiVersion: providers.tanzu.vmware.com/v1alpha1
kind: TemplateDefinition
spec:
paths:
- path: providers/infrastructure-tkg-service-vsphere/v1.1.0/ytt
- path: providers/ytt
- path: bom
filemark: text-plain
- path: providers/config_default.yaml
这些文件将按列出的顺序进行处理。如果在多个文件中设置了相同的配置字段,则最后处理的设置是 tanzu
CLI 使用的设置。
要自定义集群配置,您可以:
spec.paths
列表中。
ytt
覆盖文件。
ytt
的人员,这是更强大的方法。要单独保留的文件
VMware 不建议更改 ~/.config/tanzu/tkg/providers
下的以下文件,除非另有指示:
base-template.yaml
文件,位于 ytt
目录中
ytt
查看集群和集群计划,以在同一个 overlay.yaml
目录中设置 ytt
文件中的值。~/.config/tanzu/tkg/providers/config_default.yaml
- 仅附加
User Customizations
部分。tanzu cluster create
的 --file
选项的文件中自定义集群配置。~/.config/tanzu/tkg/providers/config.yaml
tanzu
CLI 将此文件用作 /providers
目录及其默认版本中的所有提供程序的参考。Tanzu CLI 创建基于 TKC 的工作负载集群时,会合并自多个源的配置值。如果这些源发生冲突,则会按以下降序优先解决冲突:
处理层(按降序排序) | 源 | 示例 |
---|---|---|
1.在本地环境中设置的集群配置变量 | 在 shell 中设置。 | export WORKER_VM_CLASS=best-effort-large |
2.使用 tanzu config set env. 在 Tanzu CLI 中设置的集群配置变量。 |
在 shell 中设置;已保存在全局 Tanzu CLI 配置文件 ~/.config/tanzu/config.yaml 中。 |
tanzu config set env.WORKER_VM_CLASS best-effort-large |
3.在集群配置文件中设置的集群配置变量 | 在传递到 tanzu cluster create 的 --file 选项的文件中设置。文件默认为 ~/.config/tanzu/tkg/cluster-config.yaml 。 |
WORKER_VM_CLASS: best-effort-large |
4.出厂默认配置值 | 在 providers/config_default.yaml 中设置,但列出的某些字段没有默认值。请勿修改此文件。 |
WORKER_VM_CLASS: |