创建工作负载集群

本主题介绍了如何使用 Tanzu CLI 创建工作负载集群。

必备条件

(建议)从配置文件创建集群

以下过程说明了如何从集群配置文件部署工作负载集群。从集群配置文件中,您可以创建以下类型的集群:

有关这些集群类型的详细信息,请参见《关于 Tanzu Kubernetes Grid》中的工作负载集群类型

创建基于类的集群

以下过程说明了如何从集群配置文件部署基于类的工作负载集群。生成的集群由 Kubernetes 中的 Cluster 对象表示。

重要

VMware 建议对您部署的每个集群使用和保留专用配置文件。

  1. 找到您按照上面的必要条件准备的配置文件。

  2. 创建集群。您可以通过一个步骤或两个步骤创建集群,具体取决于在创建对象之前是检查还是编辑其对象规范:

    • (推荐)通过一个步骤创建集群时,将集群配置文件传递到 tanzu cluster create–file 选项,命令会自动应用该文件。
    • 通过两个步骤创建集群时,将集群配置文件传递到 tanzu cluster create–file 选项,然后命令将文件转换为 Cluster 对象规范,并在不创建的集群的情况下退出。检查或编辑规范后,您可以通过重新运行 tanzu cluster create 来创建集群。

    注意

    在 AWS 和 Azure 上的 TKG v2.3.1 中,要从对象规范创建集群,需要使用一步式过程或明确跳过 AZ 验证,如《VMware Tanzu Kubernetes Grid v2.3 发行说明》中的在 AWS 和 Azure 上,使用对象规范创建工作负载集群失败,并显示区域/地理区域错误所述。

    一步流程(推荐)
    要执行一步流程,请执行以下操作:
    1. auto-apply-generated-clusterclass-based-configuration 设置为 true(如果尚未设置)。这会将 Tanzu CLI 配置为始终使用一步流程创建基于类的集群。有关 auto-apply-generated-clusterclass-based-configuration 的详细信息,请参见《Tanzu CLI 架构和配置》中的功能

      tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration true
      
    2. 运行 tanzu cluster create,在 --file 选项中指定集群配置文件的路径。例如,如果将配置文件 my-workload-cluster.yaml 保存在默认 clusterconfigs 文件夹中,请运行以下命令以使用在配置文件中指定的名称创建集群:

      tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      

      如果未在集群配置文件中指定名称,或者要使用与指定的名称不同的集群创建集群,请在 tanzu cluster create 命令中指定集群名称。例如,要从配置文件 my-workload-cluster.yaml 创建名为 another-workload-cluster 的集群,请运行以下命令:

      tanzu cluster create another-workload-cluster --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      
    两步流程,始终
    要对创建的每个集群执行两步过程,请执行以下操作:
    1. auto-apply-generated-clusterclass-based-configuration 功能设置为 false(如果尚未设置)。这会将 Tanzu CLI 配置为始终使用两步流程创建基于类的集群。false 为默认设置。如果已更改默认配置,将其重新设置为 false,请运行:

      tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
      

      有关 auto-apply-generated-clusterclass-based-configuration 的详细信息,请参见《Tanzu CLI 架构和配置》中的功能

    2. 要生成对象规范,请运行 tanzu cluster create,并在 --file 选项中指定集群配置文件的路径。该命令将生成的对象规范保存到 ~/.config/tanzu/tkg/clusterconfigs 文件夹,打印其位置,然后退出。

      例如,如果将集群配置文件my-workload-cluster.yaml 保存在默认 clusterconfigs 文件夹中,请运行以下命令以生成对象规范:

      tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      

      如果未在配置文件中指定集群的名称,或者要使用与指定的名称不同的集群创建集群,请在 tanzu cluster create 命令中指定集群名称。例如:

      tanzu cluster create another-workload-cluster --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      
    3. 检查或编辑 tanzu cluster create 生成的对象规范文件。

    4. 重新运行 tanzu cluster create,在 --file 选项中指定对象规范的路径。例如:

      tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster-spec.yaml
      

      如果要创建运行与管理集群不同的 Kubernetes 版本的集群,请包括第一步中使用的所有相同标记,包括 --tkr 标记。例如:

      tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster-spec.yaml -v 6 --tkr v1.24.17---vmware.1-tkg.2
      
    两步流程,一次性
    要对单个集群执行两个步骤过程,请执行以下操作:
    1. 要生成对象规范,请使用 --dry-run 选项运行 tanzu cluster create--dry-run 选项替代 auto-apply-generated-clusterclass-based-configuration 设置。

      tanzu cluster create CLUSTER-NAME --dry-run --file PATH-TO-CLUSTER-CONFIG-FILE.yaml > PATH-TO-OBJECT-SPEC-FILE.yaml
      

      其中:

      • CLUSTER-NAME 是目标集群的名称。如果在集群配置文件中指定了 CLUSTER-NAME,则可以将其省略。
      • PATH-TO-CLUSTER-CONFIG-FILE 是在步骤 1 中找到的集群配置文件的路径。
      • PATH-TO-OBJECT-SPEC-FILE 是要保存所生成对象规范文件的位置。

      例如,要将生成的对象规范保存到名为 my-workload-cluster-spec.yaml 的文件中,请运行以下命令:

      tanzu cluster create my-cluster --dry-run --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml > my-workload-cluster-spec.yaml
      
    2. 检查或编辑上一步中的 --dry-run 选项生成的对象规范文件。在上面的示例中,规范文件的名称为 my-workload-cluster-spec.yaml

    3. 检查或编辑对象规范文件后,在没有 --dry-run 选项的情况下重新运行 tanzu cluster create。在 --file 选项中,指定对象规范文件的路径。例如:

      tanzu cluster create my-cluster --file my-workload-cluster-spec.yaml
      

      如果要创建运行与管理集群不同的 Kubernetes 版本的集群,请包括第一步中使用的所有相同标记,包括 --tkr 标记。例如:

      tanzu cluster create --file my-workload-cluster-spec.yaml -v 6 --tkr v1.24.17---vmware.1-tkg.2
      
    注意

    创建基于类的集群时,Tanzu CLI 不使用具有 ytt 的旧版集群配置中所述的 ytt 自定义。如果 CLI 在您的计算机上检测到它们,则会输出错误 It seems like you have done some customizations to the template overlays.

  3. 创建集群后,运行 tanzu cluster get 命令以查看有关集群的信息:

    tanzu cluster get CLUSTER-NAME
    

    输出将列出有关控制平面和工作节点状态、集群正在运行的 Kubernetes 版本以及节点名称的信息。

(旧版)创建基于计划的集群或 TKC 集群

以下过程说明了如何从配置文件部署基于计划的集群或 TKC 集群:

  • 基于计划的集群:生成的集群由 Kubernetes 中的 AWSClusterAzureClusterVSphereCluster 对象表示,具体取决于您的目标基础架构平台。
  • TKC 集群:生成的集群由 Kubernetes 中的 TanzuKubernetesCluster 对象表示。

要创建集群,请执行以下操作:

  1. 在 Tanzu CLI 中将 allow-legacy-cluster 功能设置为 true

    tanzu config set features.cluster.allow-legacy-cluster true
    
  2. 创建集群:

    基于计划的集群
    如果要创建基于计划的集群,请执行以下步骤:
    1. 找到您按照上面的必要条件准备的配置文件。
    2. 运行 tanzu cluster create 命令,在 --file 选项中指定配置文件的路径。例如,如果将工作负载配置文件 my-workload-cluster.yaml 保存在默认 clusterconfigs 文件夹中,请运行以下命令以使用在配置文件中指定的名称创建集群:

      tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      

      如果未在配置文件中指定名称,或者要使用与指定的名称不同的集群创建集群,请在 tanzu cluster create 命令中指定集群名称。例如,要从配置文件 my-workload-cluster.yaml 创建名为 another-workload-cluster 的集群,请运行以下命令:

      tanzu cluster create another-workload-cluster --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      
    3. 创建集群后,运行 tanzu cluster get 命令以查看有关集群的信息:

      tanzu cluster get CLUSTER-NAME
      

      输出将列出有关控制平面和工作节点状态、集群正在运行的 Kubernetes 版本以及节点名称的信息。

    TKC 集群
    如果要创建 TKC 集群,请执行以下步骤:
    1. 按照配置主管部署的 TKC 集群(旧版)中所述,为工作负载集群创建或复制配置文件。

    2. 将 Tanzu CLI 连接到主管后,获取目标 vSphere 命名空间:

      tanzu namespaces get
      
    3. 确定集群的版本化 Tanzu Kubernetes 版本 (TKr):

      1. 获取主管集群中可用的 TKr 列表。

        tanzu kubernetes-release get
        
      2. 在命令输出中,记录 NAME 下列出的所需值,例如 v1.26.8---vmware.2-tkg.1tkr NAME 与其 VERSION 相同,但 + 更改为 ---

    4. 通过运行 tanzu cluster create,并使用 TKR-NAME 值和配置文件名部署集群:

      tanzu cluster create CLUSTER-NAME --file CONFIGURATION-FILE --tkr=TKR-NAME
      

      其中:

      • CLUSTER-NAME 是您为集群提供的任何名称。此命令行值将替代配置文件中的任何 CLUSTER_NAME 设置。
      • CONFIGURATION-FILE 是集群配置文件的本地路径,例如 ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
      • TKR-NAME 是上面获取的 TKr 的名称。
    5. 创建集群后,运行 tanzu cluster get 以查看集群的当前状态:

      tanzu cluster get CLUSTER-NAME
      
    6. 将其控制平面节点和端点的 IP 地址配置为静态地址,如配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)中所述。

从对象规范创建 TKC 集群

以下过程说明了如何使用 Kubernetes 样式的对象规范创建基于类的工作负载集群:

  1. 按照以下创建对象规范中所述创建集群对象规范。
  2. 按照以下从对象规范创建基于类的集群中所述,从对象规范部署集群。
注意

在 AWS 和 Azure 上的 TKG v2.3.1 中,要从对象规范创建集群,需要使用一步式过程或明确跳过 AZ 验证,如《VMware Tanzu Kubernetes Grid v2.3 发行说明》中的在 AWS 和 Azure 上,使用对象规范创建工作负载集群失败,并显示区域/地理区域错误所述。

创建对象规范

要为基于类的工作负载集群创建 Kubernetes 样式的对象规范文件,请执行以下步骤。

独立管理集群
如果要将工作负载集群部署到 具有独立管理集群的vSphere、AWS 或 Azure,则可以使用 Tanzu CLI 将集群配置文件转换为基于类的工作负载集群的 Kubernetes 样式对象规范文件,而无需部署集群。然后,您可以使用规范作为示例来创建自己的规范。要创建文件,您可以:
  • 如果更新了 auto-apply-generated-clusterclass-based-configuration 功能的默认配置,请将其设回 false,然后运行具有 --file 标记的 tanzu cluster create。要将 auto-apply-generated-clusterclass-based-configuration 设置为 false,请执行以下操作:

    tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
    

    在此功能设置为 false 并且您运行具有 --file 标记的 tanzu cluster create 时,命令会将集群配置文件转换为对象规范文件,并在不创建集群的情况下退出。查看配置后,使用 Tanzu CLI 生成的对象规范文件重新运行 tanzu cluster create

  • 要为单个集群生成规范文件,请将 --dry-run 选项传递到 tanzu cluster create 并将输出保存到文件中。使用相同的选项和配置 --file,即您在创建集群时将使用的选项和配置,例如:

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

    --dry-run 选项替代 auto-apply-generated-clusterclass-based-configuration 设置。

有关对象规范文件的示例,请参见 Cluster 对象及其辅助对象示例

主管
如果要将工作负载集群部署到 具有主管的 vSphere 8,请创建或调整 Cluster 对象规范,如 配置主管部署的基于类的集群中所述。
  • vSphere 8 文档提供了要使用的示例 Cluster 对象规范,例如v1beta1 示例:默认集群
  • 在规范文件的 topology 块中设置虚拟机类型、规模和其他基本集群配置。
  • 要自定义 Cluster 对象本身无法设置的属性(例如集群基础架构中的一次性容器接口设置),请参见配置一次性基础架构设置


从对象规范创建基于类的集群

要从对象规范部署基于类的工作负载集群,请将对象规范传递到 tanzu cluster create--file 选项,例如:

tanzu cluster create my-cluster --file my-cluster-spec.yaml
注意

创建基于类的集群时,Tanzu CLI 不使用具有 ytt 的旧版集群配置中所述的 ytt 自定义。如果 CLI 在您的计算机上检测到它们,则会输出错误 It seems like you have done some customizations to the template overlays.

创建共享服务集群

对于使用 tanzu management-cluster createtanzu mc create 创建的管理集群而不是 vSphere with Tanzu 主管集群管理的工作负载集群,部署 Harbor 或其他服务可使所有工作负载共享单个服务实例。

每个 Tanzu Kubernetes Grid 实例只能有一个共享服务集群。

通过将 Harbor 部署到共享服务集群,同一管理集群管理的所有工作负载集群可以共享单个 Harbor 实例。有关部署 Harbor 的说明,请参见为服务注册表安装 Harbor

要创建共享服务集群,请执行以下操作:

  1. 为集群创建集群配置 YAML 文件。我们建议使用 prod 集群计划,而不是 dev 计划。例如:

    INFRASTRUCTURE_PROVIDER: vsphere
    CLUSTER_NAME: YOUR-CLUSTER-NAME
    CLUSTER_PLAN: prod
    

    其中 YOUR-CLUSTER-NAME 是为集群选择的名称。例如,tkg-services

  2. 仅限 vSphere)如果您正在为集群的控制平面 API 使用默认的 Kube-Vip 负载平衡器,则必须通过设置 VSPHERE_CONTROL_PLANE_ENDPOINT 指定其端点。确保此 VIP 地址不在 DHCP 范围内,但与 DHCP 范围位于同一子网中。如果将完全限定域名 (FQDN) 映射到 VIP 地址,则可以指定 FQDN 而不是 VIP 地址。
    如果要使用 NSX Advanced Load Balancer (ALB),请不要设置 VSPHERE_CONTROL_PLANE_ENDPOINT,除非您需要控制平面端点为特定地址。如果需要,请使用 NSX ALB IPAM 配置文件的 VIP 网络范围内手动添加到静态 IP 池的静态地址,或者使用映射到该静态地址的 FQDN。

    例如:

    VSPHERE_CONTROL_PLANE_ENDPOINT: 10.10.10.10
    
  3. 按照上述从配置文件创建集群中所述创建共享服务集群。

  4. kubectl 的上下文设置为管理集群的上下文。例如:

    kubectl config use-context mgmt-cluster-admin@mgmt-cluster
    

    在此示例中,mgmt-cluster 是管理集群的名称。

  5. tanzu-services 标签作为其集群角色添加到共享服务集群。此标签标识共享服务集群和管理集群和工作负载集群。例如:

    kubectl label cluster.cluster.x-k8s.io/tkg-services cluster-role.tkg.tanzu.vmware.com/tanzu-services="" --overwrite=true
    

    在此示例中,tkg-services 是共享服务集群的名称。您应该会看到确认 cluster.cluster.x-k8s.io/tkg-services labeled

  6. 通过运行以下命令检查标签是否已正确应用:

    tanzu cluster list --include-management-cluster
    

    您应该会看到共享服务集群具有 tanzu-services 角色。例如:

    NAME              NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES        ROLES           PLAN   TKR
    another-cluster   default     running  1/1           1/1      v1.26.8+vmware.1  <none>          dev    v1.26.8---vmware.2-tkg
    tkg-services      default     running  3/3           3/3      v1.26.8+vmware.1  tanzu-services  prod   v1.26.8---vmware.2-tkg
    mgmt-cluster      tkg-system  running  1/1           1/1      v1.26.8+vmware.1  management      dev    v1.26.8---vmware.2-tkg
    
  7. 获取共享服务集群的 admin 凭据。例如:

    tanzu cluster kubeconfig get tkg-services --admin
    
  8. kubectl 的上下文设置为共享服务集群。例如:

    kubectl config use-context tkg-services-admin@tkg-services
    

下一步操作

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