本主题介绍了在将 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,请执行以下操作:
创建或调整 Cluster
对象规范。vSphere 8 文档提供了要使用的示例 Cluster
对象规范:
在规范文件的 topology
块中设置虚拟机类型、规模和其他基本集群配置。有关 topology
块的信息,请参见下面的基于类的集群对象和拓扑结构和 ClusterClass 拓扑变量。
(可选)要自定义 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
设置。Topology
结构在类型规范中包含 *Workers
,因此 workers
在对象规范中的 topology
下进行缩进。类 - class
和 variables
选项在 Cluster
对象的集群类中定义,该集群类设置为集群的 spec.topology.class
值。例如,在 vSphere with Tanzu 上,这是名为tanzukubernetescluster
的 ClusterClass
,其与 TanzuKubernetesCluster
对象不同,如工作负载集群类型中所述。
可配置的 variables
包括 vmClass
、storageClass
、proxy
、nodeLabels
、extensionCert
等,如下面的 ClusterClass 拓扑变量中所列。这些变量可配置并替代集群对象下的对象中的设置,例如 KubeAdmConfig
和 Machine
对象。
tanzukubernetescluster
集群类是 vSphere with Tanzu 工作负载集群上的 TKG 的默认 ClusterClass
,支持在 topology.variables
和 topology.workers.machineDeployments.variables
中设置的以下变量。特定于计算机部署的变量设置(如节点池)替代全局设置。
这些变量可在集群对象下方的对象(如 KubeAdmConfig
和 Machine
对象中设置的 vmClass
、storageClass
和 proxy
设置)中配置和替代设置。这使用户能够完全在 Cluster
对象规范中配置集群,无需编辑较低级别的对象规范:
clusterEncryptionConfigYaml
controlPlaneVolumes
defaultRegistrySecret
defaultStorageClass
extensionCert
nodePoolLabels
nodePoolTaints
nodePoolVolumes
ntp
proxy
storageClass
storageClasses
TKR_DATA
trust
user
vmClass
vSphere 8 文档中的以下主题介绍了通过更改正在运行的集群的 storageClass
和 vmClass
设置来对其重新配置:
要为 vSphere 8 上的 TKC(旧版)工作负载集群创建集群配置文件,您可以将先前部署的现有配置文件复制到 vSphere with Tanzu 并进行更新。或者,也可以使用空模板从头开始创建文件。
要配置通过 vSphere with Tanzu 主管部署的工作负载集群,请设置变量以定义用于创建集群的存储类、虚拟机类、服务域、命名空间和其他必需值。下表列出了可包含在基于 TKC 的集群的配置文件中的变量。或者,您也可以将其设置为本地环境变量。
所需变量 | ||
---|---|---|
变量 | 值类型或示例 | 描述 |
INFRASTRUCTURE_PROVIDER |
tkg-service-vsphere |
始终将 tkg-service-vsphere 用于 vSphere with Tanzu 上的 TanzuKubernetesCluster 对象。 |
CLUSTER_PLAN |
dev 、prod 或自定义计划 |
设置节点计数。 |
CLUSTER_CIDR |
CIDR 范围 | 要用于 pod 的 CIDR 范围。建议的范围为 100.96.0.0/11 。仅当建议的范围不可用时才更改此值。 |
SERVICE_CIDR |
要用于 Kubernetes 服务的 CIDR 范围。建议的范围为 100.64.0.0/13 。仅当建议的范围不可用时才更改此值。 |
|
SERVICE_DOMAIN |
域 | 例如,my.example.com 或 cluster.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 create 的 CLUSTER-NAME 参数覆盖。此名称必须符合 RFC 952 中所述的 DNS 主机名要求,并在 RFC 1123 中进行了修订,且长度不得超过 42 个字符。 Note: 您必须为所有命名空间中的所有工作负载集群提供唯一的名称。如果指定正在其他命名空间中使用的集群名称,集群部署将失败并显示错误。 |
NAMESPACE |
命名空间;默认值为 default 。 |
要在其中部署集群的命名空间。要查找主管的命名空间,请运行 kubectl get namespaces 。 |
CNI |
antrea 或 calico ;默认值为 antrea |
用于托管工作负载(Antrea 或 Calico)的容器网络接口。 |
CONTROL_PLANE_MACHINE_COUNT |
整数;CONTROL_PLANE_MACHINE_COUNT 必须是奇数。对于 dev ,默认值为 1 ;对于 prod ,默认值为 3 ,如CLUSTER_PLAN 所设置。 |
部署控制平面节点多于 dev 或 prod 计划默认值的工作负载集群。 |
WORKER_MACHINE_COUNT |
部署工作负载集群,其工作节点多于 dev 或 prod 计划默认值。 |
|
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"] |
|
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_PROXY
、TKG_HTTPS_PROXY
和NO_PROXY
设置为环境变量,然后使用 Tanzu CLI 创建集群。这些变量优先于 vSphere with Tanzu 中的现有代理配置。
继续创建工作负载集群。将工作负载集群部署到 vSphere 之后,必须按照 配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)中所述配置其节点 DHCP 预留和端点 DNS。