通过使用特定设置配置 Antrea CNI 软件包并在 主管 上配置可路由命名空间网络,可以创建具有可路由 Pod 网络的集群。

使用 v1beta1 API 实现可路由 Pod 网络

v1beta1 API 通过 Antrea CNI 支持可路由 Pod 网络。此功能与使用 v1alpha3 API 时的工作方式类似。有关说明,请参见v1alpha3 示例:具有可路由 Pod 网络的 TKC

应遵循相同的要求:必须对 主管 使用 NSX 网络连接,并且必须为 vSphere 命名空间 配置可路由的命名空间网络。有关指导,请参见 替代 主管 网络设置

尽管功能相同,但使用 v1beta1 API 实现可路由 Pod 网络的方法与使用 v1alpha3 API 方法不同。通过使用 v1beta1 API,您可以自定义 CNI,与集群 Calico 示例中所示的方法类似。然而,在这种情况下,您仍然会使用 Antrea CNI 软件包,但会提供特殊配置说明,以便使用可路由的 Pod 网络创建 Antrea CNI 软件包。

为此,您需要使用特定配置创建 VSphereCPIConfig 和 AntreaConfig。VSphereCPIConfig 会将 antreaNSXPodRoutingEnabled 标记设置为 true。同样,AntreaConfig 也会启用特定标记。tkg-system 命名空间中有一些示例 VSphereCPIConfig 和 AntreaConfig 配置,以 -routable 为后缀。

在为 Antrea CNI 软件包配置可路由 Pod 网络后,与 v1alpha3 方法类似,可将集群规范中的 pods.cidrBlocks 字段留空。例如:

apiVersion: cpi.tanzu.vmware.com/v1alpha1
kind: VSphereCPIConfig
metadata:
  name: cluster-4
  namespace: tkg
spec:
  vsphereCPI:
    antreaNSXPodRoutingEnabled: true
    insecure: false
    mode: vsphereParavirtualCPI
---
apiVersion: cni.tanzu.vmware.com/v1alpha1
kind: AntreaConfig
metadata:
  name: cluster-4
  namespace: tkg
spec:
  antrea:
    config:
      featureGates:
        AntreaProxy: true
        EndpointSlice: true
        AntreaPolicy: true
        FlowExporter: true
        Egress: true
        NodePortLocal: true
        AntreaTraceflow: true
        NetworkPolicyStats: true
      noSNAT: true
      trafficEncapMode: noEncap
---
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-4
spec:
  cni:
    refName: antrea.tanzu.vmware.com.1.5.3+tkg.2-zshippable
    valuesFrom:
      providerRef:
        apiGroup: cni.tanzu.vmware.com
        kind: AntreaConfig
        name: cluster-4
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: cluster-4
  namespace: tkg
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["198.52.100.0/12"]
    pods:
      cidrBlocks: []
    serviceDomain: "cluster.local"
  topology:
    class: tanzukubernetescluster
    version: v1.23.8---vmware.2-tkg.2-zshippable
    controlPlane:
      replicas: 1
      metadata:
        annotations:
          run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
    workers:
      machineDeployments:
        - class: node-pool
          name: node-pool-01
          replicas: 3
          metadata:
            annotations:
              run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
    variables:
      - name: vmClass
        value: guaranteed-medium
      - name: storageClass
        value: tkg2-storage-policy