本主题介绍了如何使用 Tanzu CLI 创建工作负载集群。
以下过程说明了如何从集群配置文件部署工作负载集群。从集群配置文件中,您可以创建以下类型的集群:
基于类的集群:如果要将工作负载集群部署到以下目标,请按照下面的创建基于类的集群中的步骤操作:
如果要将基于类的工作负载部署到具有主管的 vSphere 8,则必须从对象规范对其进行部署,如配置主管部署的基于类的集群中所述。有关集群配置文件和对象规范的详细信息,请参见配置文件。
(旧版)基于计划的集群和 TKC 集群:按照下面的(旧版)创建基于计划的集群或 TKC 集群中的步骤操作。
有关这些集群类型的详细信息,请参见《关于 Tanzu Kubernetes Grid》中的工作负载集群类型。
以下过程说明了如何从集群配置文件部署基于类的工作负载集群。生成的集群由 Kubernetes 中的 Cluster
对象表示。
重要VMware 建议对您部署的每个集群使用和保留专用配置文件。
找到您按照上面的必要条件准备的配置文件。
创建集群。您可以通过一个步骤或两个步骤创建集群,具体取决于在创建对象之前是检查还是编辑其对象规范:
tanzu cluster create
的 –file
选项,命令会自动应用该文件。tanzu cluster create
的 –file
选项,然后命令将文件转换为 Cluster
对象规范,并在不创建的集群的情况下退出。检查或编辑规范后,您可以通过重新运行 tanzu cluster create
来创建集群。注意在 Tanzu Kubernetes Grid v2.1 中,如果要分两步创建集群,
tanzu cluster create
可能会失败,并显示类似以下内容的错误:Error: workload cluster configuration validation failed...
,请参见《VMware Tanzu Kubernetes Grid v2.1 发行说明》中的运行tanzu cluster create
时出现验证错误。
将 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
运行 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
将 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 架构和配置》中的功能。
要生成对象规范,请运行 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
检查或编辑 tanzu cluster create
生成的对象规范文件。
重新运行 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.23.16---vmware.1-tkg.2
要生成对象规范,请使用 --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
检查或编辑上一步中的 --dry-run
选项生成的对象规范文件。在上面的示例中,规范文件的名称为 my-workload-cluster-spec.yaml
。
检查或编辑对象规范文件后,在没有 --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.23.16---vmware.1-tkg.2
注意创建基于类的集群时,Tanzu CLI 不使用具有 ytt 的旧版集群配置中所述的
ytt
自定义。如果 CLI 在您的计算机上检测到它们,则会输出错误It seems like you have done some customizations to the template overlays.
创建集群后,运行 tanzu cluster get
命令以查看有关集群的信息:
tanzu cluster get CLUSTER-NAME
输出将列出有关控制平面和工作节点状态、集群正在运行的 Kubernetes 版本以及节点名称的信息。
以下过程说明了如何从配置文件部署基于计划的集群或 TKC 集群:
AWSCluster
、AzureCluster
或 VSphereCluster
对象表示,具体取决于您的目标基础架构平台。TanzuKubernetesCluster
对象表示。要创建集群,请执行以下操作:
在 Tanzu CLI 中将 allow-legacy-cluster
功能设置为 true
:
tanzu config set features.cluster.allow-legacy-cluster true
创建集群:
运行 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
创建集群后,运行 tanzu cluster get
命令以查看有关集群的信息:
tanzu cluster get CLUSTER-NAME
输出将列出有关控制平面和工作节点状态、集群正在运行的 Kubernetes 版本以及节点名称的信息。
按照配置主管部署的 TKC 集群(旧版)中所述,为工作负载集群创建或复制配置文件。
将 Tanzu CLI 连接到主管后,获取目标 vSphere 命名空间:
tanzu namespaces get
确定集群的版本化 Tanzu Kubernetes 版本 (TKr):
获取主管集群中可用的 TKr 列表。
tanzu kubernetes-release get
在命令输出中,记录 NAME
, 下列出的所需值,例如 v1.22.5---vmware.1-tkg.1
。tkr
NAME
与其 VERSION
相同,但 +
更改为 ---
。
通过运行 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 的名称。创建集群后,运行 tanzu cluster get
以查看集群的当前状态:
tanzu cluster get CLUSTER-NAME
将其控制平面节点和端点的 IP 地址配置为静态地址,如配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)中所述。
以下过程说明了如何使用 Kubernetes 样式的对象规范创建基于类的工作负载集群:
注意在 Tanzu Kubernetes Grid v2.1 中,通过对象规范创建集群时,
tanzu cluster create
可能失败并出现类似于Error: workload cluster configuration validation failed...
的错误,请参见《VMware Tanzu Kubernetes Grid v2.1 发行说明》中的运行tanzu cluster create
时的验证错误。
要为基于类的工作负载集群创建 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
对象及其辅助对象示例。
Cluster
对象规范,如
配置主管部署的基于类的集群中所述。
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 create
或 tanzu mc create
创建的管理集群而不是 vSphere with Tanzu 主管集群管理的工作负载集群,部署 Harbor 或其他服务可使所有工作负载共享单个服务实例。
每个 Tanzu Kubernetes Grid 实例只能有一个共享服务集群。
通过将 Harbor 部署到共享服务集群,同一管理集群管理的所有工作负载集群可以共享单个 Harbor 实例。有关部署 Harbor 的说明,请参见为服务注册表安装 Harbor。
要创建共享服务集群,请执行以下操作:
为集群创建集群配置 YAML 文件。我们建议使用 prod
集群计划,而不是 dev
计划。例如:
INFRASTRUCTURE_PROVIDER: vsphere
CLUSTER_NAME: YOUR-CLUSTER-NAME
CLUSTER_PLAN: prod
其中 YOUR-CLUSTER-NAME
是为集群选择的名称。例如,tkg-services
。
(仅限 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
按照上述从配置文件创建集群中所述创建共享服务集群。
将 kubectl
的上下文设置为管理集群的上下文。例如:
kubectl config use-context mgmt-cluster-admin@mgmt-cluster
在此示例中,mgmt-cluster
是管理集群的名称。
将 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
。
通过运行以下命令检查标签是否已正确应用:
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.24.10+vmware.1 <none> dev v1.24.10---vmware.1-tkg
tkg-services default running 3/3 3/3 v1.24.10+vmware.1 tanzu-services prod v1.24.10---vmware.1-tkg
mgmt-cluster tkg-system running 1/1 1/1 v1.24.10+vmware.1 management dev v1.24.10---vmware.1-tkg
获取共享服务集群的 admin
凭据。例如:
tanzu cluster kubeconfig get tkg-services --admin
将 kubectl
的上下文设置为共享服务集群。例如:
kubectl config use-context tkg-services-admin@tkg-services