您可以使用 v1beta1 API 创建具有可路由 Pod 网络的集群。为此,可以使用 AntreaConfigVSphereCPIConfig 的自定义配置覆盖默认集群。

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

以下示例 YAML 演示了如何使用 v1beta1 API 置备已启用 Antrea RoutablePod 功能的集群。此示例基于 v1beta1 示例:默认集群

要启用 RoutablePod 功能,集群需要具有特殊配置的 AntreaConfigVSphereCPIConfig

AntreaConfig 必须设置 trafficEncapMode: noEncapnoSNAT: true

VSphereCPIConfig 必须设置 antreaNSXPodRoutingEnabled: truemode: vsphereParavirtualCPI
tlsCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

AntreaConfig 的名称格式必须为 <cluster-name>-antrea-packageVSphereCPIConfig 的名称格式必须为 <cluster-name>-vsphere-cpi-package

创建配置文件后,便可以创建引用配置文件的集群规范对象。在创建集群期间,将使用配置文件置备集群并覆盖默认配置。

创建可路由 Pod 网络:主管 配置

要创建可路由的 Pod 网络,需要在 主管 和 TKG 集群上进行配置。
注: 必须为 主管 配置 NSX,才能使用可路由的 Pod 网络。无法将可路由 Pod 与 VDS 网络连接结合使用。
要在 主管 上配置可路由 Pod 网络,请执行以下操作:
  1. 创建新的 vSphere 命名空间

    请参见创建 vSphere 命名空间 以托管 TKG 服务 集群

  2. 选中复选框选项以替代主管网络设置

    有关指导,请参见 覆盖 vSphere 命名空间 的工作负载网络设置

  3. 按如下方式配置可路由 Pod 网络。
    字段 描述
    NAT 模式 取消选择此选项可禁用网络地址转换 (NAT)。
    命名空间网络

    在此字段中填充一个格式为 IP 地址/位(例如 10.0.0.6/16)的可路由 IP 子网。

    NCP 将从为网络指定的 IP 段创建一个或多个 IP 池。

    您至少应指定 /23 子网大小。例如,如果指定子网前缀为 /28 的 /23 可路由子网,您将获得 32 个子网,这对 6 节点集群来说应该足够了。前缀为 /28 的 /24 子网将仅获得 2 个子网,这还不够。

    注意: 确保您添加的可路由 IP 子网与为集群节点分配 IP 地址的 服务 CIDR 不重叠。要查看 服务 CIDR,请单击 主管 > 配置 > 网络 > 工作负载网络
    命名空间子网前缀

    例如,以 /28 格式指定子网前缀。

    子网前缀用于为命名空间网络中的每个节点划分 Pod 子网。

  4. 单击创建以创建可路由 Pod 网络。

创建可路由 Pod 网络:TKG 集群配置

以下示例 YAML 说明了如何配置具有可路由 Pod 网络的 v1beta1 集群。

如以下示例中所示,您必须从集群规范中移除 spec.clusterNetwork.pod 部分,因为 Pod IP 地址将由 cloud-provider-vsphere 分配。
注: 该示例作为单个 YAML 文件提供,但可以拆分为多个单独的文件。如果进行拆分,则必须按顺序进行创建:首先创建 AntreaConfigVSphereCPIConfig 自定义资源,然后创建 target-cluster 集群。
---
apiVersion: cni.tanzu.vmware.com/v1alpha1
kind: AntreaConfig
metadata:
 name: target-cluster-antrea-package
spec:
 antrea:
   config:
     defaultMTU: ""
     disableUdpTunnelOffload: false
     featureGates:
       AntreaPolicy: true
       AntreaProxy: true
       AntreaTraceflow: true
       Egress: false
       EndpointSlice: true
       FlowExporter: false
       NetworkPolicyStats: false
       NodePortLocal: false
     noSNAT: true
     tlsCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384
     trafficEncapMode: noEncap
---
apiVersion: cpi.tanzu.vmware.com/v1alpha1
kind: VSphereCPIConfig
metadata:
 name: target-cluster-vsphere-cpi-package
spec:
 vsphereCPI:
   antreaNSXPodRoutingEnabled: true
   insecure: false
   mode: vsphereParavirtualCPI
   tlsCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
 name: target-cluster
spec:
 clusterNetwork:
   services:
     cidrBlocks: ["198.51.100.0/12"]
   serviceDomain: "cluster.local"
 topology:
   class: tanzukubernetescluster
   version: v1.25.7---vmware.3-fips.1-tkg.1
   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