通过在 主管 上配置可路由的命名空间网络并将 antrea-nsx-routed 指定为集群的 CNI,可以创建具有可路由 Pod 网络的 TanzuKubernetesCluster。

关于可路由 Pod 网络

使用 antreacalico CNI 插件置备 Tanzu Kubernetes 集群时,系统会创建默认 Pod 网络 192.168.0.0/16。此子网是专用地址空间,仅独属于集群,不能在网络上路由。

TKG v1alpha3 API 通过 antrea-nsx-routed CNI 插件支持可路由 Pod 网络。此网络接口是一个自定义 Antrea 插件,配置为对 TKG 集群支持可路由 Pod 网络。在集群规范中,Pod CIDR 块字段必须明确为空,以便 IP 地址管理 (IPAM) 由 主管 处理。请参阅下面的示例。

通过启用可路由 Pod 网络,可以直接从集群外部的客户端寻址 Pod。此外,将保留 Pod IP 地址,以便外部网络服务和服务器可以识别源 Pod 并根据 IP 地址应用策略。支持的流量模式包括:
  • 允许同一 vSphere 命名空间 中的 TKG 集群 Pod 与 vSphere Pod 之间的流量。
  • 丢弃不同 vSphere 命名空间 中的 TKG 集群 Pod 和 vSphere Pod 之间的流量。
  • 主管 控制平面可以访问 TKG 集群 Pod。
  • TKG 集群 Pod 可以访问外部网络。
  • 外部网络无法访问 TKG 集群 Pod。集群节点上的分布式防火墙 (DFW) 隔离规则将丢弃流量。

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

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

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

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

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

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

    命名空间网络 CIDR 是作为 vSphere 命名空间的 IP 池运行的子网。命名空间子网前缀描述从该 IP 池中分出的任何后续 CIDR 块的大小。

    在此字段中填充一个格式为 IP 地址/位(例如 10.0.0.6/16)的可路由 IP 子网。NCP 将从为网络指定的 IP 段创建一个或多个 IP 池。

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

    命名空间子网前缀

    命名空间子网前缀描述从命名空间网络 IP 池中分出的任何后续 CIDR 块的大小。

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

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

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

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

集群规范将 antrea-nsx-routed 声明为 CNI 以启用可路由 Pod 网络。如果指定了 antrea-nsx-routed,在不使用 NSX-T 网络的情况下,集群置备将失败。

指定 CNI 为 antrea-nsx-routed 时, pods.cidrBlock 字段必须为空。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkc-routable-pods
  namespace: tkg-cluster-ns
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg-storage-policy
      tkr:  
        reference:
          name: v1.25.7---vmware.3-fips.1-tkg.1
    nodePools:
    - name: worker-nodepool-a1
      replicas: 3
      vmClass: guaranteed-large
      storageClass: tkg-storage-policy
      tkr:  
        reference:
          name: v1.25.7---vmware.3-fips.1-tkg.1
  settings:
    storage:
      defaultClass: tkg-storage-policy
    network:
      #antrea-nsx-routed is the required CNI
      cni:
        name: antrea-nsx-routed
      services:
        cidrBlocks: ["10.97.0.0/24"]
      #pods.cidrBlocks must be null (empty)
      pods:
        cidrBlocks:
      serviceDomain: cluster.local