Tanzu Kubernetes Grid 服务 声明式 API 公开了多个用于配置 Tanzu Kubernetes 集群的参数。请参考用于置备和自定义集群的所有参数和使用准则的列表和描述。
用于置备 Tanzu Kubernetes 集群的带批注 YAML
带批注的 YAML 列出了用于置备
Tanzu Kubernetes 集群的所有参数以及每个字段的汇总备注。
注: 未验证用于置备集群的带批注 YAML。请参考以下示例了解此类指南:
使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: <tanzu kubernetes cluster name> namespace: <vsphere namespace where the cluster will be provisioned> spec: distribution: version: <tanzu kubernetes release version string: full, point, short> topology: controlPlane: count: <integer either 1 or 3> class: <vm class bound to the target vsphere namespace> storageClass: <vsphere storage policy bound to the target vsphere namespace> volumes: #optional setting for high-churn control plane component (such as etcd) - name: <user-defined string> mountPath: </dir/path> capacity: storage: <size in GiB> workers: count: <integer from 0 to 150> class: <vm class bound to the target vsphere namespace> storageClass: <vsphere storage policy bound to the target vsphere namespace> volumes: #optional setting for high-churn worker node component (such as containerd) - name: <user-defined string> mountPath: </dir/path> capacity: storage: <size in GiB> settings: #all spec.settings are optional storage: #optional storage settings classes: [<array of kubernetes storage classes for dynamic pvc provisioning>] defaultClass: <default kubernetes storage class> network: #optional network settings cni: #override default cni set in the tkgservicesonfiguration spec name: <antrea or calico> pods: #custom pod network cidrBlocks: [<array of pod cidr blocks>] services: #custom service network cidrBlocks: [<array of service cidr blocks>] serviceDomain: <custom service domain> proxy: #proxy server for outbound connections httpProxy: http://<IP:PORT> httpsProxy: http://<IP:PORT> noProxy: [<array of CIDRs to not proxy>] trust: #trust fields for custom public certs for tls additionalTrustedCAs: - name: <first-cert-name> data: <base64-encoded string of PEM encoded public cert 1> - name: <second-cert-name> data: <base64-encoded string of PEM encoded public cert 2>
用于置备 Tanzu Kubernetes 集群的参数
下表列出并介绍了可用于置备 Tanzu Kubernetes 集群的所有参数和可接受的值。有关示例,请参见配置 Tanzu Kubernetes Grid 服务 v1alpha1 API 的示例。
名称 | 值 | 描述 |
---|---|---|
apiVersion |
run.tanzu.vmware.com/v1alpha1 |
指定 Tanzu Kubernetes Grid 服务 API 的版本。 |
kind |
TanzuKubernetesCluster |
指定要创建的 Kubernetes 资源的类型。唯一允许的值为 TanzuKubernetesCluster (区分大小写)。 |
metadata |
集群元数据部分 | 包括集群元数据,例如 name 和 namespace 。这是标准的 Kubernetes 元数据,因此可以使用 generateName (而非 name ),添加标签和注释等。 |
name |
用户定义的字符串,接受字母数字字符和短划线,例如:my-tkg-cluster-1 |
指定要创建的集群的名称。当前集群命名限制:
|
namespace |
用户定义的字符串,接受字母数字字符和短划线,例如:my-sns-1 |
标识将在其中部署集群的主管命名空间的名称。这是对主管集群上存在的主管命名空间的引用。 |
spec |
集群的技术规范部分 | 包括集群最终状态的规范(以声明性方式表示),其中包括节点 toplogy 和 Kubernetes 软件 distribution 。 |
distribution |
用于指定 Tanzu Kubernetes 发布版本的部分 | 指示集群的分发:在控制平面节点和工作节点上安装的 Tanzu Kubernetes 集群软件,包括 Kubernetes 本身。 |
version |
用字母数字字符串和短划线表示 Kubernetes 版本,例如: 、v1.20.2 或 v1.20 |
使用语义版本表示法指定要在集群节点上安装的 Kubernetes 发行版的软件版本。可以指定完全限定版本,也可以使用版本快捷方式,如“version: v1.20.2”(解析为与该修补程序版本匹配的最新映像)或“version: v1.20”(解析为最新匹配的修补程序版本)。在创建集群后,解析后的版本将在集群描述中显示为“fullVersion”。 |
topology |
集群节点拓扑部分 | 包括描述集群节点数量、用途和组织以及分配给每个节点的资源的字段。集群节点根据其预期用途(control-plane 或 worker )分组到池。每个池都为同类,具有相同的资源分配并使用相同的存储。 |
controlPlane |
控制平面设置部分 | 指定集群控制平面的拓扑,包括节点数量 (count )、虚拟机类型 (class ) 以及为每个节点分配的存储资源 (storageClass )。 |
count |
值为 1 或 3 的整数 |
指定控制平面节点数量。控制平面的节点数量必须为奇数。 |
class |
系统定义的元素,采用枚举集合中字符串的形式,例如:guaranteed-small 或 best-effort-large |
指定 VirtualMachineClass 的名称,此参数描述了池中每个节点使用的虚拟硬件设置。此参数控制节点可用的硬件(CPU 和内存)以及有关这些资源的请求和限制。请参见用于 Tanzu Kubernetes 集群的虚拟机类。 |
storageClass |
node-storage (示例) |
标识用于存储磁盘(存储控制平面节点的根文件系统)的存储类。在命名空间上运行 kubectl describe ns 可查看可用的存储类。命名空间的可用存储类取决于 vSphere 管理员设置的存储。与主管命名空间关联的存储类将在集群中进行复制。换句话说,存储类必须在主管命名空间上可用,才能成为此字段的有效值。请参见配置和管理 vSphere 命名空间。 |
volumes |
可选存储设置
|
可以为控制平面节点上的 etcd 指定单独的磁盘和存储参数。请参见示例具有单独磁盘和存储参数的集群。 |
workers |
工作节点设置部分 | 指定集群工作节点的拓扑,包括节点数量 (count )、虚拟机类型 (class ) 以及为每个节点分配的存储资源 (storageClass )。 |
count |
介于 0 和 150 之间的整数,例如:1 、2 或 7 |
指定集群中的工作节点数。可以创建具有零个工作节点的集群,从而允许使用仅具有控制平面节点的集群。工作节点数上限无硬性限制,但合理的限制为 150 个。
注: 对于置备了 0 个工作节点的集群,不会向其分配任何负载均衡器服务。
|
class |
系统定义的元素,采用枚举集合中字符串的形式,例如:guaranteed-small 或 best-effort-large |
指定 VirtualMachineClass 的名称,此参数描述了池中每个节点使用的虚拟硬件设置。此参数控制节点可用的硬件(CPU 和内存)以及有关这些资源的请求和限制。请参见用于 Tanzu Kubernetes 集群的虚拟机类。 |
storageClass |
node-storage (示例) |
标识用于存储磁盘(存储工作节点的根文件系统)的存储类。在命名空间上运行 kubectl describe ns 可列出可用的存储类。命名空间的可用存储类取决于 vSphere 管理员设置的存储。与主管命名空间关联的存储类将在集群中进行复制。换句话说,存储类必须在主管命名空间上可用,才能有效。请参见配置和管理 vSphere 命名空间。 |
volumes |
可选存储设置
|
可以为工作节点上的容器映像指定单独的磁盘和存储参数。请参见示例具有单独磁盘和存储参数的集群。 |
settings |
集群特定设置部分;所有 spec.settings 均为可选 |
标识集群的可选运行时配置信息,包括 Pod 的节点 network 详细信息和持久 storage 。 |
storage |
用于指定存储的部分 | 标识容器工作负载的持久卷 (PV) 存储条目。 |
classes |
由一个或多个用户定义的字符串组成的数组,例如:["gold", "silver"] |
指定容器工作负载的命名持久卷 (PV) 存储类。与主管命名空间关联的存储类将在集群中进行复制。换句话说,存储类必须在主管命名空间上可用,才能成为有效值。请参见示例对持久卷使用存储类和默认类的集群。 |
defaultClass |
silver (示例) |
指定要注释为集群中默认值的命名存储类。如果未指定,则没有默认值。无需指定一个或多个 classes 即可指定 defaultClass 。某些工作负载可能需要默认类,例如 Helm。请参见示例对持久卷使用存储类和默认类的集群。 |
network |
网络连接设置的部分标记 | 指定集群的网络相关设置。 |
cni |
用于指定 CNI 的部分标记 | 标识集群的容器网络接口 (CNI) 插件。默认值为 Antrea,无需为新集群指定该值。 |
name |
字符串 antrea 或 calico |
指定要使用的 CNI。支持 Antrea 和 Calico。系统配置会将 Antrea 设置为默认 CNI。可以更改默认 CNI。如果使用默认值,则无需指定此字段。 |
services |
用于指定 Kubernetes 服务子网的部分标记 | 标识 Kubernetes 服务的网络设置。默认值为 10.96.0.0/12。 |
cidrBlocks |
(例如)阵列 ["198.51.100.0/12"] |
指定要用于 Kubernetes 服务的 IP 地址范围。默认值为 10.96.0.0/12。不能与为主管集群选择的设置重叠。虽然此字段是一个阵列,允许使用多个范围,但当前只允许使用一个 IP 范围。请参见使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例中的网络连接示例。 |
pods |
用于指定 Kubernetes pod 子网的部分标记 | 指定 Pod 的网络设置。默认值为 192.168.0.0/16。最小块大小为 /24。 |
cidrBlocks |
(例如)阵列 ["192.0.2.0/16"] |
指定要用于 Kubernetes Pod 的 IP 地址范围。默认值为 192.168.0.0/16。不能与为主管集群选择的设置重叠。Pod 子网大小必须等于或大于 /24。虽然此字段是一个阵列,允许使用多个范围,但当前只允许使用一个 IP 范围。请参见使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例中的网络连接示例。 |
serviceDomain |
"cluster.local" |
指定集群的服务域。默认值为 cluster.local 。 |
proxy |
指定集群的 HTTP(s) 代理配置的部分。如果已实施,则所有字段均为必填字段。 | 提供指定代理设置的字段;如果配置了全局代理且未配置单个集群代理,则会自动填充。请参见示例具有代理服务器的集群。 |
httpProxy |
http://<user>:<pwd>@<ip>:<port> |
指定用于创建集群外部 HTTP 连接的代理 URL。 |
httpsProxy |
http://<user>:<pwd>@<ip>:<port> |
指定用于创建集群外部 HTTPS 连接的代理 URL。 |
noProxy |
不作为代理的 CIDR 块阵列,例如: 从主管集群上的工作负载网络获取所需的值: 请参阅下图,了解要包括在 |
不得针对 Pod、输入和输出代理主管集群上的工作负载网络使用的子网。 无需在 系统不会自动代理 系统不会自动代理 Tanzu Kubernetes 集群的“Pod CIDR”和“服务 CIDR”。无需将它们添加到 请参见示例具有代理服务器的集群。 |
trust |
trust 参数的部分标记。 |
不接受任何数据。 |
additionalTrustedCAs |
为每个受信任的 CA 接受一组包含 name 和 data 的证书。 |
不接受任何数据。 |
name |
String | TLS 证书的名称。 |
data |
String | PEM 编码的公共证书的 base64 编码字符串。 |
从 主管集群 中的工作负载网络获取所需的 noProxy
值,如下图所示。