本主题介绍了在将 Tanzu Kubernetes Grid (TKG) 工作负载集群部署到具有独立管理集群的 vSphere 之前,如何使用平面配置文件或 Kubernetes 样式对象规范配置该集群。要配置工作负载集群以部署到 vSphere with Tanzu,请参见具有主管集群的 vSphere 配置文件。
有关如何使用配置文件和对象规范配置工作负载集群的一般信息,请参见配置文件和对象规范。
要使用 vSphere 特定的工作负载集群功能,这些功能需要在集群的配置文件或对象规范之外进行某些配置,请参见 vSphere 上的集群。
要在工作负载集群部署到 vSphere 之前对其进行配置,请创建集群配置文件或 Kubernetes 样式对象规范文件。将其中任一文件传递到 tanzu cluster create
的 -f
选项时,Tanzu CLI 使用文件中定义的配置信息连接到 vSphere 帐户并创建集群将使用的资源。例如,您可以指定控制平面和工作节点虚拟机的标准大小,或明确配置控制平面和工作节点的 CPU、内存和磁盘大小。如果使用自定义映像模板,则可以确定用于创建节点虚拟机的模板。
有关将工作负载集群部署到 vSphere 时必须指定的选项的完整列表,请参见配置文件变量参考。
要创建集群配置文件,可以使用以下工作负载集群模板中的模板。创建配置文件后,继续创建工作负载集群。
以下模板包括与在 vSphere 上部署工作负载集群相关的所有选项。您可以复制此模板并进行更新,以将工作负载集群部署到 vSphere。
已取消对必填选项的注释。可选设置已注释掉。如果适用,则包括默认值。
除了模板下方各节中所述的选项外,为特定于 vSphere 的工作负载集群配置变量的方式对于管理集群和工作负载集群是相同的。有关如何配置变量的信息,请参见从配置文件部署管理集群和 vSphere 的管理集群配置。
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
# CLUSTER_NAME:
CLUSTER_PLAN: dev
NAMESPACE: default
# CLUSTER_API_SERVER_PORT: # For deployments without NSX Advanced Load Balancer
CNI: antrea
#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------
# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
# VSPHERE_NUM_CPUS: 2
# VSPHERE_DISK_GIB: 40
# VSPHERE_MEM_MIB: 4096
# VSPHERE_CONTROL_PLANE_NUM_CPUS: 2
# VSPHERE_CONTROL_PLANE_DISK_GIB: 40
# VSPHERE_CONTROL_PLANE_MEM_MIB: 8192
# VSPHERE_WORKER_NUM_CPUS: 2
# VSPHERE_WORKER_DISK_GIB: 40
# VSPHERE_WORKER_MEM_MIB: 4096
# CONTROL_PLANE_MACHINE_COUNT:
# WORKER_MACHINE_COUNT:
# WORKER_MACHINE_COUNT_0:
# WORKER_MACHINE_COUNT_1:
# WORKER_MACHINE_COUNT_2:
#! ---------------------------------------------------------------------
#! vSphere configuration
#! ---------------------------------------------------------------------
#VSPHERE_CLONE_MODE: "fullClone"
VSPHERE_NETWORK: VM Network
# VSPHERE_TEMPLATE:
# VSPHERE_TEMPLATE_MOID:
# IS_WINDOWS_WORKLOAD_CLUSTER: false
# VIP_NETWORK_INTERFACE: "eth0"
VSPHERE_SSH_AUTHORIZED_KEY:
VSPHERE_USERNAME:
VSPHERE_PASSWORD:
# VSPHERE_REGION:
# VSPHERE_ZONE:
# VSPHERE_AZ_0:
# VSPHERE_AZ_1:
# VSPHERE_AZ_2:
VSPHERE_SERVER:
VSPHERE_DATACENTER:
VSPHERE_RESOURCE_POOL:
VSPHERE_DATASTORE:
VSPHERE_FOLDER:
# VSPHERE_MTU:
# VSPHERE_STORAGE_POLICY_ID
# VSPHERE_WORKER_PCI_DEVICES:
# VSPHERE_CONTROL_PLANE_PCI_DEVICES:
# VSPHERE_IGNORE_PCI_DEVICES_ALLOW_LIST:
# VSPHERE_CONTROL_PLANE_CUSTOM_VMX_KEYS:
# VSPHERE_WORKER_CUSTOM_VMX_KEYS:
# WORKER_ROLLOUT_STRATEGY: "RollingUpdate"
# VSPHERE_CONTROL_PLANE_HARDWARE_VERSION:
# VSPHERE_WORKER_HARDWARE_VERSION:
VSPHERE_TLS_THUMBPRINT:
VSPHERE_INSECURE: false
# VSPHERE_CONTROL_PLANE_ENDPOINT: # Required for Kube-Vip
# VSPHERE_CONTROL_PLANE_ENDPOINT_PORT: 6443
# VSPHERE_ADDITIONAL_FQDN:
AVI_CONTROL_PLANE_HA_PROVIDER: false
#! ---------------------------------------------------------------------
#! NSX specific configuration for enabling NSX routable pods
#! ---------------------------------------------------------------------
# NSXT_POD_ROUTING_ENABLED: false
# NSXT_ROUTER_PATH: ""
# NSXT_USERNAME: ""
# NSXT_PASSWORD: ""
# NSXT_MANAGER_HOST: ""
# NSXT_ALLOW_UNVERIFIED_SSL: false
# NSXT_REMOTE_AUTH: false
# NSXT_VMC_ACCESS_TOKEN: ""
# NSXT_VMC_AUTH_HOST: ""
# NSXT_CLIENT_CERT_KEY_DATA: ""
# NSXT_CLIENT_CERT_DATA: ""
# NSXT_ROOT_CA_DATA: ""
# NSXT_SECRET_NAME: "cloud-provider-vsphere-nsxt-credentials"
# NSXT_SECRET_NAMESPACE: "kube-system"
#! ---------------------------------------------------------------------
#! Common configuration
#! ---------------------------------------------------------------------
# TKG_CUSTOM_IMAGE_REPOSITORY: ""
# TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY: false
# TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: ""
# TKG_HTTP_PROXY: ""
# TKG_HTTPS_PROXY: ""
# TKG_NO_PROXY: ""
# TKG_PROXY_CA_CERT: ""
ENABLE_AUDIT_LOGGING: false
ENABLE_DEFAULT_STORAGE_CLASS: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""
#! ---------------------------------------------------------------------
#! Autoscaler configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
# AUTOSCALER_MAX_NODES_TOTAL: "0"
# AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
# AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
# AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
# AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
# AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
# AUTOSCALER_MIN_SIZE_0:
# AUTOSCALER_MAX_SIZE_0:
# AUTOSCALER_MIN_SIZE_1:
# AUTOSCALER_MAX_SIZE_1:
# AUTOSCALER_MIN_SIZE_2:
# AUTOSCALER_MAX_SIZE_2:
#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------
# ANTREA_NO_SNAT: false
# ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
# ANTREA_TRAFFIC_ENCAP_MODE: "encap"
# ANTREA_EGRESS_EXCEPT_CIDRS: ""
# ANTREA_NODEPORTLOCAL_ENABLED: true
# ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
# ANTREA_PROXY_ALL: false
# ANTREA_PROXY_NODEPORT_ADDRS: ""
# ANTREA_PROXY_SKIP_SERVICES: ""
# ANTREA_PROXY_LOAD_BALANCER_IPS: false
# ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
# ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
# ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "30s"
# ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
# ANTREA_KUBE_APISERVER_OVERRIDE:
# ANTREA_TRANSPORT_INTERFACE:
# ANTREA_TRANSPORT_INTERFACE_CIDRS: ""
# ANTREA_MULTICAST_INTERFACES: ""
# ANTREA_MULTICAST_IGMPQUERY_INTERVAL: "125s"
# ANTREA_TUNNEL_TYPE: geneve
# ANTREA_ENABLE_USAGE_REPORTING: false
# ANTREA_ENABLE_BRIDGING_MODE: false
# ANTREA_DISABLE_TXCHECKSUM_OFFLOAD: false
# ANTREA_DNS_SERVER_OVERRIDE: ""
# ANTREA_MULTICLUSTER_ENABLE: false
# ANTREA_MULTICLUSTER_NAMESPACE: ""
如果要将集群部署到 vSphere 并将默认 Kube-Vip 负载均衡器用于集群的控制平面 API,则必须通过设置 VSPHERE_CONTROL_PLANE_ENDPOINT
来指定其端点。如果要使用 NSX Advanced Load Balancer (ALB),请不要设置 VSPHERE_CONTROL_PLANE_ENDPOINT
,除非您需要控制平面端点为特定地址。如果是,请在 NSX ALB IPAM 配置文件的 VIP 网络范围内使用已手动添加到静态 IP 池的静态地址。
任何两个集群(包括管理集群和工作负载集群)都不能具有相同的 VSPHERE_CONTROL_PLANE_ENDPOINT
地址。
您可以使用 Tanzu CLI 将集群配置文件转换为基于类的工作负载集群的 Kubernetes 样式对象规范,而无需部署集群:
要为使用 tanzu cluster create
创建的每个基于类的集群生成对象规范文件,请确保在 Tanzu CLI 的配置中将 auto-apply-generated-clusterclass-based-configuration
功能设置为 false
。默认情况下,此功能设置为 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
然后,您可以使用此对象规范部署集群,如从对象规范创建基于类的集群中所述。
有关对象规范文件的示例,请参见 Cluster
对象及其辅助对象示例。
继续创建工作负载集群。将工作负载集群部署到 vSphere 之后,必须按照 配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)中所述配置其节点 DHCP 预留和端点 DNS。