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 的示例

表 1. 用于置备 Tanzu Kubernetes 集群的参数
名称 描述
apiVersion run.tanzu.vmware.com/v1alpha1 指定 Tanzu Kubernetes Grid 服务 API 的版本。
kind TanzuKubernetesCluster 指定要创建的 Kubernetes 资源的类型。唯一允许的值为 TanzuKubernetesCluster(区分大小写)。
metadata 集群元数据部分 包括集群元数据,例如 namenamespace。这是标准的 Kubernetes 元数据,因此可以使用 generateName(而非 name),添加标签和注释等。
name 用户定义的字符串,接受字母数字字符和短划线,例如:my-tkg-cluster-1 指定要创建的集群的名称。当前集群命名限制:
  • 名称长度不得超过 41 个字符。
  • 名称必须以字母开头。
  • 名称可以包含字母、数字和连字符。
  • 名称必须以字母或数字结尾。
namespace 用户定义的字符串,接受字母数字字符和短划线,例如:my-sns-1 标识将在其中部署集群的主管命名空间的名称。这是对主管集群上存在的主管命名空间的引用。
spec 集群的技术规范部分 包括集群最终状态的规范(以声明性方式表示),其中包括节点 toplogy 和 Kubernetes 软件 distribution
distribution 用于指定 Tanzu Kubernetes 发布版本的部分 指示集群的分发:在控制平面节点和工作节点上安装的 Tanzu Kubernetes 集群软件,包括 Kubernetes 本身。
version 用字母数字字符串和短划线表示 Kubernetes 版本,例如:v1.20.2+vmware.1-tkg.1v1.20.2v1.20 使用语义版本表示法指定要在集群节点上安装的 Kubernetes 发行版的软件版本。可以指定完全限定版本,也可以使用版本快捷方式,如“version: v1.20.2”(解析为与该修补程序版本匹配的最新映像)或“version: v1.20”(解析为最新匹配的修补程序版本)。在创建集群后,解析后的版本将在集群描述中显示为“fullVersion”。
topology 集群节点拓扑部分 包括描述集群节点数量、用途和组织以及分配给每个节点的资源的字段。集群节点根据其预期用途(control-planeworker)分组到池。每个池都为同类,具有相同的资源分配并使用相同的存储。
controlPlane 控制平面设置部分 指定集群控制平面的拓扑,包括节点数量 (count)、虚拟机类型 (class) 以及为每个节点分配的存储资源 (storageClass)。
count 值为 13 的整数 指定控制平面节点数量。控制平面的节点数量必须为奇数。
class 系统定义的元素,采用枚举集合中字符串的形式,例如:guaranteed-smallbest-effort-large 指定 VirtualMachineClass 的名称,此参数描述了池中每个节点使用的虚拟硬件设置。此参数控制节点可用的硬件(CPU 和内存)以及有关这些资源的请求和限制。请参见用于 Tanzu Kubernetes 集群的虚拟机类
storageClass node-storage(示例) 标识用于存储磁盘(存储控制平面节点的根文件系统)的存储类。在命名空间上运行 kubectl describe ns 可查看可用的存储类。命名空间的可用存储类取决于 vSphere 管理员设置的存储。与主管命名空间关联的存储类将在集群中进行复制。换句话说,存储类必须在主管命名空间上可用,才能成为此字段的有效值。请参见配置和管理 vSphere 命名空间
volumes
可选存储设置
  • volumes:
    • name: string
    • mountPath: /dir/path
    • capacity
      • storage: GiB 大小
可以为控制平面节点上的 etcd 指定单独的磁盘和存储参数。请参见示例具有单独磁盘和存储参数的集群
workers 工作节点设置部分 指定集群工作节点的拓扑,包括节点数量 (count)、虚拟机类型 (class) 以及为每个节点分配的存储资源 (storageClass)。
count 介于 0 和 150 之间的整数,例如:127 指定集群中的工作节点数。可以创建具有零个工作节点的集群,从而允许使用仅具有控制平面节点的集群。工作节点数上限无硬性限制,但合理的限制为 150 个。
注: 对于置备了 0 个工作节点的集群,不会向其分配任何负载均衡器服务。
class 系统定义的元素,采用枚举集合中字符串的形式,例如:guaranteed-smallbest-effort-large 指定 VirtualMachineClass 的名称,此参数描述了池中每个节点使用的虚拟硬件设置。此参数控制节点可用的硬件(CPU 和内存)以及有关这些资源的请求和限制。请参见用于 Tanzu Kubernetes 集群的虚拟机类
storageClass node-storage(示例) 标识用于存储磁盘(存储工作节点的根文件系统)的存储类。在命名空间上运行 kubectl describe ns 可列出可用的存储类。命名空间的可用存储类取决于 vSphere 管理员设置的存储。与主管命名空间关联的存储类将在集群中进行复制。换句话说,存储类必须在主管命名空间上可用,才能有效。请参见配置和管理 vSphere 命名空间
volumes
可选存储设置
  • volumes:
    • name: string
    • mountPath: /dir/path
    • capacity
      • storage: GiB 大小
可以为工作节点上的容器映像指定单独的磁盘和存储参数。请参见示例具有单独磁盘和存储参数的集群
settings 集群特定设置部分;所有 spec.settings 均为可选 标识集群的可选运行时配置信息,包括 Pod 的节点 network 详细信息和持久 storage
storage 用于指定存储的部分 标识容器工作负载的持久卷 (PV) 存储条目。
classes 由一个或多个用户定义的字符串组成的数组,例如:["gold", "silver"] 指定容器工作负载的命名持久卷 (PV) 存储类。与主管命名空间关联的存储类将在集群中进行复制。换句话说,存储类必须在主管命名空间上可用,才能成为有效值。请参见示例对持久卷使用存储类和默认类的集群
defaultClass silver(示例) 指定要注释为集群中默认值的命名存储类。如果未指定,则没有默认值。无需指定一个或多个 classes 即可指定 defaultClass。某些工作负载可能需要默认类,例如 Helm。请参见示例对持久卷使用存储类和默认类的集群
network 网络连接设置的部分标记 指定集群的网络相关设置。
cni 用于指定 CNI 的部分标记 标识集群的容器网络接口 (CNI) 插件。默认值为 Antrea,无需为新集群指定该值。
name 字符串 antreacalico 指定要使用的 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 块阵列,例如:[10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]

从主管集群上的工作负载网络获取所需的值:Pod CIDRsIngress CIDRsEgress CIDRs

请参阅下图,了解要包括在 noProxy 阵列字段中的值。

不得针对 Pod、输入和输出代理主管集群上的工作负载网络使用的子网。

无需在 noProxy 字段中包括主管集群的“服务 CIDR”。Tanzu Kubernetes 集群不与此类服务交互。

系统不会自动代理 localhost127.0.0.1 端点。无需将它们添加到 noProxy 字段中。

系统不会自动代理 Tanzu Kubernetes 集群的“Pod CIDR”和“服务 CIDR”。无需将它们添加到 noProxy 字段中。

请参见示例具有代理服务器的集群

trust trust 参数的部分标记。 不接受任何数据。
additionalTrustedCAs 为每个受信任的 CA 接受一组包含 namedata 的证书。 不接受任何数据。
name String TLS 证书的名称。
data String PEM 编码的公共证书的 base64 编码字符串。

主管集群 中的工作负载网络获取所需的 noProxy 值,如下图所示。

“工作负载网络”窗口,突出显示了“Pod CIDR”、“输入 CIDR”和“输出 CIDR”值。