工作负载集群

本主题介绍 Tanzu Kubernetes Grid (TKG) 创建的不同类型的工作负载集群,以及如何配置和创建这些集群。

工作负载集群类型:基于类、TKC 和基于计划

Tanzu Kubernetes Grid 托管三种不同类型的工作负载集群:

  • 基于类的集群
    • 类型为 Cluster 的 Kubernetes 对象
    • vSphere with Tanzu 8 和 TKG 2.x 中引入的一种新型集群
    • spec.topology 块中定义了基本拓扑
      • 例如,工作节点和控制平面节点的数量和类型
    • spec.topology.class 值继承配置
      • ClusterClass 对象
      • 在主管上,默认 classtanzukubernetescluster
      • 在独立管理集群上,默认 classtkg-INFRASTRUCTURE-default-VERSION,例如 tkg-vsphere-default-v1.0.0
    • 可以使用 vSphere with Tanzu 8 中的主管创建,也可以使用没有主管的 vSphere 6.7、7 和 8 上,AWS 上或 Azure 上的独立 TKG v2.x 管理集群创建
  • 基于 TKC 的集群(旧版)
    • 类型为 TanzuKubernetesCluster 的 Kubernetes 对象
    • 可以通过在 vSphere 7 上使用主管集群或 vSphere 8 上的主管集群进行创建,以实现旧版用途
  • 基于计划的集群(旧版)
    • 类型为 Cluster 的 Kubernetes 对象
    • 可以在没有主管的 vSphere 6.7、7 和 8 上、AWS 或 Azure 上使用独立 TKG v2.x 或 v1.x 管理集群上创建

请注意,具有 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 软件:

  • 集群 API - 用于创建和管理 Kubernetes 集群的开源 Kubernetes 软件。
  • 集群 API 提供程序软件在特定云或物理基础架构上运行,作为支持集群 API 的接口。
    • 大多数集群 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 CLI 兼容性

通过随不同版本的 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 版本的完整列表,请参见产品互操作性矩阵

工作负载集群对象子组件

基于类的集群具有以下对象类型的高级别层次结构。KubeAdmControlPlaneMachineDeployment 底层对象具有相同的类型,但通常是不同的对象:

  • Cluster - 由规范中的 topology 块设置的控制平面和工作节点的数量和类型
    • KubeAdmControlPlane - 定义控制平面节点
      • IaaS 特定的计算机对象 - 例如 vSphereMachineAWSMachineDockerMachine
      • Machine - 节点虚拟机的通用对象
      • KubeAdmConfig - Kubernetes 配置,包括 Kubernetes 版本、映像存储库、部署前和部署后 hook 等。
    • MachineDeployment - 定义工作节点
      • IaaS 特定的计算机对象
      • 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.yamltkc.yaml 以声明方式创建工作负载集群

*本地目录位于 .config/tanzu/tkg/providers/

关于旧版 TKC 和基于计划的集群配置

Tanzu CLI 创建基于 TKC 的工作负载集群时,会合并以下各项中的配置值:

  • 调用时实时输入
    • CLI 输入
  • 环境变量
  • ~/.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 列表中的自定义文件
  • 用户创建或编辑以覆盖其他配置文件中的值的 ytt 覆盖

要编辑的文件,要单独保留的文件

要通过 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 提供程序模块的版本。
  • PLANdevprod 或自定义计划。

每个计划配置文件都有一个 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 目录中

    • 这些配置文件使用 Kubernetes SOG和其他上游开源项目下的集群 API 提供程序存储库中的值,它们最好保持不变。
    • 相反,请创建新的配置文件或在高级 TKC 配置中使用 ytt查看集群和集群计划,以在同一个 overlay.yaml 目录中设置 ytt 文件中的值。
  • ~/.config/tanzu/tkg/providers/config_default.yaml - 仅附加

    • 此文件包含 Tanzu Kubernetes Grid 的系统范围默认值。
    • 请勿修改此文件中的现有值,但可以在末尾附加 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:
check-circle-line exclamation-circle-line close-line
Scroll to top icon