ルーティング可能なポッド ネットワークを使用する TanzuKubernetesCluster を作成するには、クラスタの CNI として antrea-nsx-routed を指定して、ルーティング可能な名前空間ネットワークを スーパーバイザー に構成します。

ルーティング可能なポッド ネットワークについて

antrea または calico CNI プラグインを使用して Tanzu Kubernetes クラスタをプロビジョニングすると、デフォルトのポッド ネットワーク 192.168.0.0/16 が作成されます。このサブネットは、クラスタ内でのみ一意のプライベート アドレス空間であり、ネットワーク上ではルーティングできません。

TKG v1alpha3 API は、antrea-nsx-routed CNI プラグインを使用してルーティング可能なポッド ネットワークをサポートします。このネットワーク インターフェイスは、カスタマイズされた Antrea プラグインであり、TKG クラスタでルーティング可能なポッド ネットワークをサポートするように構成されています。クラスタの仕様では、IP アドレス管理 (IPAM) が スーパーバイザー によって処理されるようにするために、ポッドの CIDR ブロック フィールドを明示的に null にする必要があります。次の例を参照してください。

ルーティング可能なポッド ネットワークを有効にすると、クラスタ外のクライアントから直接ポッドのアドレスを指定できます。また、外部のネットワーク サービスおよびサーバがソース ポッドを識別し、IP アドレスに基づいてポリシーを適用できるように、ポッドの IP アドレスが保存されます。次のようにトラフィック パターンがサポートされます。
  • 同じ vSphere 名前空間 にある TKG クラスタ ポッドと vSphere ポッド の間では、トラフィックが許可されます。
  • 異なる vSphere 名前空間 にある TKG クラスタ ポッドと vSphere ポッド の間では、トラフィックがドロップされます。
  • スーパーバイザー 制御プレーン ノードは、TKG クラスタ ポッドにアクセスできます。
  • TKG クラスタ ポッドは外部ネットワークにアクセスできます。
  • 外部ネットワークは、TKG クラスタ ポッドにアクセスできません。クラスタ ノードでは、分散ファイアウォール (DFW) の隔離ルールによってトラフィックがドロップされます。

ルーティング可能なポッド ネットワークの作成:スーパーバイザー 構成

ルーティング可能なポッド ネットワークを作成するには、 スーパーバイザー と TKG クラスタで構成を行う必要があります。
注: ルーティング可能なポッド ネットワークを使用するには、NSX に スーパーバイザー を構成する必要があります。VDS ネットワークでは、ルーティング可能なポッドを使用することはできません。
ルーティング可能なポッド ネットワークを スーパーバイザー で構成するには、次の手順を実行します。
  1. 新しい vSphere 名前空間 を作成します。

    スーパーバイザー 上の TKG クラスタをホストするための vSphere 名前空間 の作成を参照してください。

  2. [スーパーバイザー ネットワーク設定のオーバーライド] チェックボックスをオンにします。

    詳細については、vSphere 名前空間 の スーパーバイザー ネットワーク設定のオーバーライドを参照してください。

  3. [NAT モード] をオフにします。
  4. [名前空間ネットワーク] に、ルーティング可能なサブネットを入力します。NCP によって、ネットワークに指定された IP ブロックから 1 つ以上の IP プールが作成されます。
  5. ルーティング可能な[名前空間ネットワーク]を追加した後で、それがクラスタ ノードの IP アドレスを割り当てる[サービス CIDR] と重複していないことを確認します。

ルーティング可能なポッド ネットワークの作成:TKG クラスタの構成

次のサンプル YAML は、ルーティング可能なポッド ネットワークを使用してクラスタを構成する方法を示します。

クラスタの仕様では、ルーティング可能なポッド ネットワークを有効にするために antrea-nsx-routed を CNI として宣言しています。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