配置文件和对象规范

本主题介绍如何使用平面配置文件或 Kubernetes 样式的对象规范配置 Tanzu Kubernetes Grid (TKG) 工作负载集群。有关特定于 IaaS 的说明,请参见:

集群类型

如何配置工作负载集群取决于集群类型,如以下部分中所述。

  • (more类型)基于类的集群将 Kubernetes 样式的对象规范用于 Cluster 对象。要创建基于类的集群,可以传递此对象规范或具有设置大写下划线变量(如 CLUSTER_NAME)的平面结构的集群配置文件到 tanzu cluster create

    • 更高级的自定义可能还需要 ClusterBootstrap 及其引用的对象的规范。
  • (旧版类型)基于计划的集群和 TKC 集群使用具有设置大写下划线变量(如 CLUSTER_NAME)平面结构的集群配置文件。要创建旧版集群,请将此配置文件传递到 tanzu cluster create

    • 更高级的自定义可能需要 ytt 覆盖网络才能自定义工作负载集群或集群计划。

有关上述集群类型及其使用的集群 API 提供程序的详细信息,请参见:

有关为工作负载集群选择哪个配置文件的信息,请参见下表。

配置文件

您可以将 … 与 Tanzu CLI 结合使用 创建 … 类型的工作负载集群 在基础架构上…
平面集群配置文件
  • 基于类的集群
  • 基于计划的集群
  • TKC 集群
  • 具有独立管理集群的 vSphere 6.7、7 和 8;AWS 和 Azure 上基于类的集群
  • 具有独立管理集群的 vSphere 6.7、7 和 8;AWS 和 Azure 上基于计划的集群
  • 具有主管的 vSphere 8 上的 TKC 集群
Kubernetes 样式对象规范 基于类的集群 具有主管的 vSphere 8;具有独立管理集群的 vSphere 6.7、7 和 8;AWS 和 Azure

使用集群配置文件配置工作负载集群

可以使用集群配置文件配置以下类型的集群:

  • 基于类的集群:这包括部署到:

    • 具有独立管理集群的 vSphere 6.7、7 和 8
    • AWS
    • Azure

    如果要将基于类的工作负载部署到具有主管的 vSphere 8,则必须从对象规范对其进行部署,如配置主管部署的基于类的集群(仅限 vSphere 8)中所述。

  • (旧版)基于计划的集群和 TKC 集群:这包括部署到:

    • 对于基于计划的集群:独立管理集群的 vSphere 6.7、7 和 8,AWS 和 Azure
    • 对于 TKC 集群:具有主管的 vSphere 8

关于集群配置文件

将工作负载集群部署到 vSphere、AWS 或 Azure 之前,请为集群创建配置文件。将此文件传递到 tanzu cluster create--file 选项时,Tanzu CLI 使用该文件中定义的配置信息连接到目标平台并创建集群将使用的资源。

要创建集群配置文件,您可以复制先前部署的现有配置文件并进行更新。或者,也可以使用空模板从头开始创建文件:

创建第一个集群配置文件

部署工作负载集群时,该集群的大部分配置与用于部署该集群的独立管理集群的配置相同。因此,为工作负载集群创建配置文件的最简单方法是从独立管理集群配置文件的副本开始。

  1. 找到管理集群的 YAML 配置文件:

    • 如果从安装程序界面部署管理集群,但在运行 tanzu mc create --ui 时未指定 --file 选项,则配置文件将保存在 ~/.config/tanzu/tkg/clusterconfigs/ 中。该文件具有随机生成的名称,例如,bm8xk9bv1v.yaml
    • 如果从安装程序界面部署了管理集群,并且指定了 --file 选项,则会从指定的文件中获取管理集群配置。
    • 如果在不使用安装程序界面的情况下从 Tanzu CLI 部署管理集群,则会从您在 --file 选项中指定的文件或默认位置 ~/.config/tanzu/tkg/cluster-config.yaml 获取管理集群配置。
  2. 创建管理集群配置文件的副本,并使用新名称保存该文件。例如,将文件另存为 my-aws-cluster.yamlmy-azure-cluster.yamlmy-vsphere-cluster.yaml

  3. 更新集群配置文件中的设置。如果要将工作负载集群配置为使用默认 Ubuntu 20.04 以外的操作系统,则必须设置 OS_NAMEOS_VERSION 值。安装程序界面在保存到 ~/.config/tanzu/tkg/clusterconfigs 的管理集群配置文件中不包含节点虚拟机操作系统值。

  4. 保存文件。

要为具有主管的 vSphere 8 上的 TKC 集群准备集群配置文件,请参见配置主管部署的 TKC 集群(旧版)

使用对象规范配置工作负载集群

可以使用 Kubernetes 样式对象规范文件将基于类的工作负载集群部署到:

  • 无主管的 vSphere 6.7、7 和 8
  • 具有主管的 vSphere 8
  • AWS
  • Azure

关于对象规范文件

对象规范文件与集群配置文件具有相同的用途。将对象规范传递到 tanzu cluster create--file 选项时,Tanzu CLI 使用对象规范中定义的配置信息创建集群。

创建第一个对象规范文件

与其他 Kubernetes 对象一样,您可以通过创建和编辑对象规范来配置基于类的工作负载集群。对于集群对象,以下是:

  • Cluster 对象:配置大多数集群选项,例如集群拓扑。您可以更改并重新应用此对象规范,以便更改正在运行的集群的配置。
  • (可选;vSphere with Tanzu) ClusterBootstrap 对象:配置仅在首次创建集群时应用的非默认选项,例如容器网络接口 (CNI) 和容器存储接口 (CSI),以及无法在正在运行的集群中重新配置的选项。有关更多信息,请参见配置一次性基础架构设置

要创建第一个对象规范文件,请执行以下操作:

  • 如果要将基于类的工作负载集群部署到无主管的 vSphere 、AWS 或 Azure,则可以使用 Tanzu CLI 将集群配置文件转换为对象规范文件,而无需部署集群:

    • 全局配置)使用 Tanzu CLI 的 auto-apply-generated-clusterclass-based-configuration 功能。默认情况下,此功能设置为 false。在 auto-apply-generated-clusterclass-based-configuration 设置为 false 并且您运行具有 --file 标记的 tanzu cluster create 时,命令会将集群配置文件转换为对象规范文件并在不创建集群的情况下退出。查看配置后,使用 Tanzu CLI 生成的对象规范文件重新运行 tanzu cluster create,如从对象规范中创建基于类的集群中所述。如果已更新默认配置,则将其重新设置为 false,请运行:

      tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
      
    • 单个集群)将 --dry-run 选项传递到 tanzu cluster create 并将输出保存到文件中。使用相同的选项和配置 --file,即您在创建集群时将使用的选项和配置,例如:

      tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
      

      然后,您可以使用此对象规范部署集群,如从对象规范创建基于类的集群中所述。

  • 如果要将基于类的工作负载集群部署到具有主管的 vSphere 8,请创建或调整 Cluster 对象规范,如配置主管部署的基于类的集群(仅 vSphere 8) 中所述。vSphere 8 文档提供了要使用的示例 Cluster 对象规范,例如v1beta1 示例:默认集群

配置一次性基础架构设置 (vSphere with Tanzu)

您可以在 Cluster 对象规范中配置最常见的集群设置,但某些集群组件来自集群节点所基于的 Tanzu Kubernetes 版本 (TKr)。例如,TKr 指定集群使用的 CNI、CSI 和 Pinniped 版本。

这些基础架构级别选项在 ClusterBootstrap 对象创建集群时应用且无法在正在运行的集群中更改。在创建集群之前配置这些选项的一般过程是:

  1. ClusterBootstrap 及其引用的任何自定义对象创建对象规范,例如 CalicoConfig 对象。

  2. Cluster 对象本身创建对象规范。

  3. 在所有对象规范的 metadata 中,包括要创建的集群的名称和命名空间,例如:

    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: ClusterBootstrap
    metadata:
      name: MY-CLUSTER
      namespace: MY-NAMESPACE
    

    自定义可能需要其他元数据,例如注释。

  4. 将所有对象规范(包括 Cluster 定义)连接到单个文件中。使用包含三个短划线 (---) 的行分隔规范。

  5. 将对象规范传递到 kubectl apply--file 选项,例如:

    kubectl config use-context CONTEXT-NAME
    
    kubectl apply -f my-custom-cluster-objects.yaml
    

替代方法:作为最后两个步骤的替代方法,您可以对除 Cluster 对象以外的所有对象规范运行 kubectl apply -f,然后使用 Cluster 对象规范运行 tanzu cluster create --file

有关此过程的特定示例,请参见使用非默认 CNI 创建集群,该示例将集群的 CNI 设置为 Calico。

工作负载集群、kubectlkubeconfig

创建工作负载集群时,Tanzu Kubernetes Grid 不会自动将 kubectl 上下文设置为工作负载集群。必须使用 kubectl config use-context 命令手动设置工作负载集群的 kubectl 上下文。

默认情况下,除非您指定 KUBECONFIG 选项以将集群的 kubeconfig 保存到特定文件,否则部署的所有工作负载集群都将添加到共享的 .kube/config 文件中。如果您删除共享的 .kube/config 文件,但仍具有管理集群的 .kube-tkg/config 文件,则可以使用 tanzu cluster kubeconfig get CLUSTER-NAME 命令恢复工作负载集群的 .kube/config

在 Tanzu Kubernetes Grid 操作正在运行时,请勿更改上下文或编辑 .kube-tkg/config.kube/config 文件。

下一步操作

继续执行基础架构的集群配置主题:

check-circle-line exclamation-circle-line close-line
Scroll to top icon