请参阅此示例,置备使用 Calico CNI(而非默认 Antrea CNI)的 v1beta1 集群。此外,还可以参阅此示例,了解如何为集群自定义一个或多个 TKR 软件包。

v1beta1 示例:使用自定义 CNI 的集群

以下示例 YAML 演示了如何使用 v1beta1 API 通过自定义 CNI 置备集群。此示例基于 v1beta1 示例:默认集群而构建。

tanzukubernetescluster ClusterClass 中所定义,默认 CNI 为 Antrea。支持的另一个 CNI 是 Calico。要将 CNI 从 Antrea 更改为 Calico,请通过创建引用 CalicoConfig 自定义资源的 ClusterBootstrap 自定义资源使默认 CNI 超载。

ClusterBootstrap 自定义资源包含 spec.cni.refName 块,其值来自 TKR。(有关如何获取此字段的值的指导,请参见 TKr 软件包。) ClusterBootstrap 值将覆盖 ClusterClass 中的默认值,并在创建集群时由集群 API (CAPI) 选取。 ClusterBootstrap 自定义资源的名称必须与 Cluster 相同。
注: 该示例作为单个 YAML 文件提供,但可以拆分为多个单独的文件。如果进行拆分,则必须按顺序进行创建:首先创建 CalicoConfig 自定义资源,然后创建 ClusterBootstrap,最后创建 cluster-calico 集群。
---
apiVersion: cni.tanzu.vmware.com/v1alpha1
kind: CalicoConfig
metadata:
  name: cluster-calico
spec:
  calico:
    config:
      vethMTU: 0
---
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: ClusterBootstrap
metadata:
  annotations:
    tkg.tanzu.vmware.com/add-missing-fields-from-tkr: v1.23.8---vmware.2-tkg.2-zshippable
  name: cluster-calico
spec:
  cni:
    refName: calico.tanzu.vmware.com.3.22.1+vmware.1-tkg.2-zshippable
    valuesFrom:
      providerRef:
        apiGroup: cni.tanzu.vmware.com
        kind: CalicoConfig
        name: cluster-calico
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: cluster-calico
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["198.51.100.0/12"]
    pods:
      cidrBlocks: ["192.0.2.0/16"]
    serviceDomain: "cluster.local"
  topology:
    class: tanzukubernetescluster
    version: v1.23.8---vmware.2-tkg.2-zshippable
    controlPlane:
      replicas: 3
    workers:
      machineDeployments:
        - class: node-pool
          name: node-pool-1
          replicas: 3
    variables:
      - name: vmClass
        value: guaranteed-medium
      - name: storageClass
        value: tkg2-storage-policy