可以透過將 antrea-nsx-routed 指定為叢集的 CNI,將 Tanzu Kubernetes 叢集設定為使用可路由的網繭網路。

引入可路由網繭網路

Kubernetes 網路模型要求叢集之節點網路中的網繭能夠與同一叢集中所有節點上的所有網繭進行通訊,而無需網路位址轉譯 (NAT)。為了滿足此需求,將為每個 Kubernetes 網繭提供從專用網繭繭網路配置的 IP 位址。

使用 antreacalico CNI 外掛程式佈建 Tanzu Kubernetes 叢集時,系統會建立預設網繭網路 192.168.0.0/16。此子網路是私人位址空間,僅在叢集內是唯一的,且無法在網際網路上進行路由。雖然您可以自訂 network.pods.cidrBlocks,但網繭網路無法使用這些 CNI 外掛程式進行路由。如需詳細資訊,請參閱 用於佈建 Tanzu Kubernetes 叢集的 TKGS v1alpha2 API

Tanzu Kubernetes Grid 服務 v1alpha2 API 支援可使用 antrea-nsx-routed CNI 外掛程式進行路由的網繭網路。此網路介面是一個自訂 Antrea 外掛程式,設定為支援 Tanzu Kubernetes 叢集的可路由網繭網路。在叢集規格中,網繭 CIDR 區塊欄位必須明確為 Null,以便 IP 位址管理 (IPAM) 由主管叢集處理。

透過啟用可路由網繭網路,可以將網繭直接從外部用戶端定址到叢集。此外,還會保留網繭 IP 位址,以便外部網路服務和伺服器可以識別來源網繭,並根據 IP 位址套用原則。支援的流量模式包括以下內容:
  • 允許同一 vSphere 命名空間中的 Tanzu Kubernetes 叢集網繭與 vSphere 網繭之間的流量。
  • 捨棄不同 vSphere 命名空間中的 Tanzu Kubernetes 叢集網繭與 vSphere 網繭之間的流量。
  • 主管叢集控制平面節點可連線至 Tanzu Kubernetes 叢集網繭。
  • Tanzu Kubernetes 叢集網繭可連線至外部網路。
  • 外部網路無法連線至 Tanzu Kubernetes 叢集網繭。Tanzu Kubernetes 叢集節點上的分散式防火牆 (DFW) 隔離規則捨棄流量。

可路由網繭的系統需求

可路由網繭網路要求為主管叢集設定 NSX-T Data Center。無法將可路由網繭與原生 vSphere vDS 網路搭配使用。

可路由網繭需要 Tanzu Kubernetes Grid 服務 v1alpha2 API。請參閱使用 TKGS v1alpha2 API 的需求

可路由網繭的 NSX-T 組態需求

除了基本需求之外,將可路由網繭網路與 Tanzu Kubernetes 叢集搭配使用時不需要特殊 NSX-T 組態。執行 vSphere U3 和 NSX-T 的 vSphere with Tanzu 環境包含支援可路由網繭網路的 NCP 版本。不需要額外的 NSX-T 組態。

NCP 將從以下兩個來源之一為可路由網繭網路建立 IP 集區:
  • 如果為工作負載網路設定了命名空間網路,NCP 將從為此命名空間網路指定的 IP 區塊建立一或多個 IP 集區。
  • 如果沒有為工作負載網路指定命名空間網路,NCP 將從主管叢集網繭 CIDR 建立一或多個 IP 集區。
如需詳細資訊,請參閱 將工作負載網路新增至設定了 VDS 網路的主管叢集變更設定了 NSX-T Data Center 之主管叢集上的工作負載網路設定

可路由網繭的主管叢集組態需求

除了基本需求之外,將可路由網繭網路與 Tanzu Kubernetes 叢集搭配使用時不需要特殊主管叢集組態。

如果已按如下所述啟用可路由網繭網路,則會從透過命名空間網路建立的 IP 集區配置 Tanzu Kubernetes 叢集網繭 CIDR,如果未啟用,則從主管叢集網繭 CIDR 進行配置。

必須確保為叢集節點配置 IP 位址的主管叢集服務 CIDR 不會與命名空間網路 CIDR 或主管叢集網繭 CIDR 重疊。

可路由網繭的叢集組態範例

下列範例 YAML 顯示如何為叢集設定可路由的網繭網路。是用於叫用 Tanzu Kubernetes Grid 服務的自訂組態,可使用 v1alpha2 API 佈建 Tanzu Kubernetes 叢集。

叢集規格會將 antrea-nsx-routed 宣告為 CNI,以啟用可路由的網繭網路。指定 CNI 為 antrea-nsx-routed 時,pods.cidrBlock 欄位必須為空白。如果已指定 antrea-nsx-routed,則在未使用 NSX-T 網路的情況下,叢集佈建將會失敗。

apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-v2-cluster-routable-pods
  namespace: tkgs-cluster-ns
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: vwt-storage-policy
      tkr:  
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
    nodePools:
    - name: worker-nodepool-a1
      replicas: 3
      vmClass: guaranteed-large
      storageClass: vwt-storage-policy
      tkr:  
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
  settings:
    storage:
      defaultClass: vwt-storage-policy
    network:
      #`antrea-nsx-routed` is the required CNI
      #for routable pods 
      cni:
        name: antrea-nsx-routed
      services:
        cidrBlocks: ["10.97.0.0/24"]
      serviceDomain: tanzukubernetescluster.local
      #`pods.cidrBlocks` value must be empty
      #when `antrea-nsx-routed` is the CNI 
      pods:
        cidrBlocks: