具有主管集群配置文件的 vSphere

本主题介绍了在将 Tanzu Kubernetes Grid (TKG) 工作负载集群部署到具有 Tanzu 的 vSphere 8 之前,如何使用平面配置文件或 Kubernetes 样式对象规范配置该集群。要配置工作负载集群以部署到具有独立管理集群的 vSphere,请参见具有独立管理集群的 vSphere 配置文件

有关如何使用配置文件和对象规范配置工作负载集群的一般信息,请参见配置文件和对象规范

要使用 vSphere 特定的工作负载集群功能,这些功能需要在集群的配置文件或对象规范之外进行某些配置,请参见 vSphere 上的集群

概览

要在将工作负载集群部署到 vSphere with Tanzu 之前对其进行配置,请创建 Kubernetes 样式的对象规范文件(如果要配置基于类的集群)或集群配置文件(如果要配置 TKC 集群)。将其中任一文件传递到 tanzu cluster create-f 选项时,Tanzu CLI 使用文件中定义的配置信息连接到 vSphere 帐户并创建集群将使用的资源。

要配置:

有关上述集群类型的信息,请参见工作负载集群类型

配置主管部署的基于类的集群

要配置工作负载集群以将其部署到具有 Tanzu 的 vSphere 8,请执行以下操作:

  1. 创建或调整 Cluster 对象规范。vSphere 8 文档提供了要使用的示例 Cluster 对象规范:

    在规范文件的 topology 块中设置虚拟机类型、规模和其他基本集群配置。有关 topology 块的信息,请参见下面的基于类的集群对象和拓扑结构ClusterClass 拓扑变量

  2. (可选)要自定义 Cluster 对象本身无法设置的属性(例如集群基础架构中的一次性容器接口设置),请参见配置一次性基础架构设置

基于类的集群对象和拓扑结构

可在具有 tanzukubernetescluster 类型的 Cluster 对象中配置的顶级设置如下所示。有关可以配置的 variables,请参见 ClusterClass 拓扑变量

spec:
  clusterNetwork
    apiServerPort
    services
      cidrBlocks
    pods
      cidrBlocks
    serviceDomain
  controlPlaneEndpoint
    host
    port
  topology
    class
    version
    rolloutAfter
    controlPlane
      metadata
      replicas
      nodeDrainTimeout
      nodeDeletionTimeout
      machineHealthCheck
        maxUnhealthy
        nodeStartupTimeout
        unhealthyConditions
    workers
      machineDeployments
        metadata
        - class
        name
        failureDomain
        replicas
        nodeDrainTimeout
        nodeDeletionTimeout
        machineHealthCheck
          maxUnhealthy
          nodeStartupTimeout
          unhealthyConditions
        variables
          name
          value
  variables
    name
    value

这些字段在 Cluster 对象类型规范中设置:cluster_types.go

  • 可选字段:对于每个字段,json: 设置指示该字段是否为可选字段。可选字段具有 omitempty 设置。
  • 类型规范中由引用嵌套的结构在对象规范 YAML 中进行缩进。例如,Topology 结构在类型规范中包含 *Workers,因此 workers 在对象规范中的 topology 下进行缩进。

- classvariables 选项在 Cluster 对象的集群类中定义,该集群类设置为集群的 spec.topology.class 值。例如,在 vSphere with Tanzu 上,这是名为tanzukubernetesclusterClusterClass,其与 TanzuKubernetesCluster 对象不同,如工作负载集群类型中所述。

可配置的 variables 包括 vmClassstorageClassproxynodeLabelsextensionCert 等,如下面的 ClusterClass 拓扑变量中所列。这些变量可配置并替代集群对象下的对象中的设置,例如 KubeAdmConfigMachine 对象。

ClusterClass 拓扑变量

tanzukubernetescluster 集群类是 vSphere with Tanzu 工作负载集群上的 TKG 的默认 ClusterClass,支持在 topology.variablestopology.workers.machineDeployments.variables 中设置的以下变量。特定于计算机部署的变量设置(如节点池)替代全局设置。

这些变量可在集群对象下方的对象(如 KubeAdmConfigMachine 对象中设置的 vmClassstorageClassproxy 设置)中配置和替代设置。这使用户能够完全在 Cluster 对象规范中配置集群,无需编辑较低级别的对象规范:

  • clusterEncryptionConfigYaml
  • controlPlaneVolumes
  • defaultRegistrySecret
  • defaultStorageClass
  • extensionCert
  • nodePoolLabels
  • nodePoolTaints
  • nodePoolVolumes
  • ntp
  • proxy
  • storageClass
  • storageClasses
  • TKR_DATA
  • trust
  • user
  • vmClass

vSphere 8 文档中的以下主题介绍了通过更改正在运行的集群的 storageClassvmClass 设置来对其重新配置:

配置主管部署的 TKC 集群(旧版)

要为 vSphere 8 上的 TKC(旧版)工作负载集群创建集群配置文件,您可以将先前部署的现有配置文件复制到 vSphere with Tanzu 并进行更新。或者,也可以使用空模板从头开始创建文件。

要配置通过 vSphere with Tanzu 主管部署的工作负载集群,请设置变量以定义用于创建集群的存储类、虚拟机类、服务域、命名空间和其他必需值。下表列出了可包含在基于 TKC 的集群的配置文件中的变量。或者,您也可以将其设置为本地环境变量。

所需变量
变量 值类型或示例 描述
INFRASTRUCTURE_PROVIDER tkg-service-vsphere 始终将 tkg-service-vsphere 用于 vSphere with Tanzu 上的 TanzuKubernetesCluster 对象。
CLUSTER_PLAN devprod 或自定义计划 设置节点计数。
CLUSTER_CIDR CIDR 范围 要用于 pod 的 CIDR 范围。建议的范围为 100.96.0.0/11。仅当建议的范围不可用时才更改此值。
SERVICE_CIDR 要用于 Kubernetes 服务的 CIDR 范围。建议的范围为 100.64.0.0/13。仅当建议的范围不可用时才更改此值。
SERVICE_DOMAIN 例如,my.example.comcluster.local,如果无 DNS。如果要为 FQDN 分配节点,则需要查找 DNS。
CONTROL_PLANE_VM_CLASS 适用于 vSphere with Tanzu 的标准虚拟机类,例如 guaranteed-large
请参见 vSphere with Tanzu 文档中的将虚拟机类与主管上的 TKG 集群结合使用
控制平面节点的虚拟机类
WORKER_VM_CLASS 工作节点的虚拟机类
可选变量
变量 值类型或示例 描述
CLUSTER_NAME String 由传递到 tanzu cluster createCLUSTER-NAME 参数覆盖。
此名称必须符合 RFC 952 中所述的 DNS 主机名要求,并在 RFC 1123 中进行了修订,且长度不得超过 42 个字符。Note:您必须为所有命名空间中的所有工作负载集群提供唯一的名称。如果指定正在其他命名空间中使用的集群名称,集群部署将失败并显示错误。
NAMESPACE 命名空间;默认值为 default 要在其中部署集群的命名空间。要查找主管的命名空间,请运行 kubectl get namespaces
CNI antreacalico;默认值为 antrea 用于托管工作负载(Antrea 或 Calico)的容器网络接口。
CONTROL_PLANE_MACHINE_COUNT 整数;CONTROL_PLANE_MACHINE_COUNT 必须是奇数。
对于 dev,默认值为 1;对于 prod,默认值为 3,如CLUSTER_PLAN 所设置。
部署控制平面节点多于 devprod 计划默认值的工作负载集群。
WORKER_MACHINE_COUNT 部署工作负载集群,其工作节点多于 devprod 计划默认值。
STORAGE_CLASSES 空字符串 "" 允许集群使用名称空间中的任何存储类;或 kubectl get storageclasses 中的逗号分隔值列表,例如"SC-1,SC-2,SC-3" 可用于节点自定义的存储类。
DEFAULT_STORAGE_CLASS 空字符串 "" 表示没有默认值或 CLI 中的值(如上所示)。 控制平面或工作线程的默认存储类。
CONTROL_PLANE_STORAGE_CLASS kubectl get storageclasses 返回的值 控制平面节点的默认存储类。
WORKER_STORAGE_CLASS 工作节点的默认存储类。
NODE_POOL_0_NAME String 节点池名称、标签和污点。TanzuKubernetesCluster 只能有一个节点池。
NODE_POOL_0_LABELS 字符串的 JSON 列表,例如["label1", "label2"]["label1", "label2"]
NODE_POOL_0_TAINTS 键值对字符串的 JSON 列表,例如,[{"key1": "value1"}, {"key2": "value2"}]

您可以通过执行以下任一操作来设置上面的变量:

  • 将它们包含在传递到 Tanzu CLI --file 选项的集群配置文件中。例如:

    CONTROL_PLANE_VM_CLASS: guaranteed-large
    
  • 通过在命令行中运行 export(在 Linux 和 macOS 上)或 SET(在 Windows 上)将其设置为本地环境变量。例如:

    export CONTROL_PLANE_VM_CLASS=guaranteed-large
    
    注意

    如果要为工作负载集群配置唯一的代理设置,可以将 TKG_HTTP_PROXYTKG_HTTPS_PROXYNO_PROXY 设置为环境变量,然后使用 Tanzu CLI 创建集群。这些变量优先于 vSphere with Tanzu 中的现有代理配置。

下一步操作

继续创建工作负载集群。将工作负载集群部署到 vSphere 之后,必须按照 配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)中所述配置其节点 DHCP 预留和端点 DNS。

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