設定が必要な NSX-T Data Center リソースには、オーバーレイ トランスポート ゾーン、Tier-0 論理ルーター、ノード仮想マシンに接続する論理スイッチ、Kubernetes ノードの IP アドレス ブロック、SNAT の IP アドレス プールなどがあります。

重要:

NSX-T Data Center 2.4 以降で実行している場合は、[ネットワークとセキュリティの詳細設定] タブを使用して NSX-T リソースを設定する必要があります。

NSX Container Plug-in (NCP) 設定ファイル ncp.ini では、NSX-T Data Center リソースはそれらの UUID または名前を使用して指定されます。

オーバーレイ トランスポート ゾーン

NSX Manager にログインして、コンテナ ネットワークに使用されているオーバーレイ トランスポート ゾーンを検索するか、新規に作成します。

ncp.ini[nsx_v3] セクションで overlay_tz オプションを設定して、クラスタのオーバーレイ トランスポート ゾーンを指定します。この手順はオプションです。overlay_tz を設定しない場合、NCP は Tier-0 ルーターからオーバーレイ トランスポート ゾーン ID を自動的に取得します。

Tier-0 論理ルーティング

NSX Manager にログインして、コンテナ ネットワークに使用されているルーターを検索するか、新規に作成します。

ncp.ini[nsx_v3] セクションで tier0_router オプションを設定して、クラスタの Tier-0 論理ルーターを指定します。

注:

ルーターは、アクティブ/スタンバイ モードで作成する必要があります。

論理スイッチ

ノードがデータ トラフィック用に使用する vNIC は、オーバーレイ論理スイッチに接続する必要があります。ノードの管理インターフェイスは NSX-T Data Center に接続する必要はありませんが、接続するとセットアップが容易になります。論理スイッチを作成するには、NSX Manager にログインします。スイッチ上で論理ポートを作成し、ノードの vNIC を接続します。論理ポートには次のタグが必要です。

  • タグ:<cluster_name>、スコープ:ncp/cluster

  • タグ:<node_name>、スコープ:ncp/node_name

<cluster_name> 値は、ncp.ini[coe] セクションにある cluster オプションの値と一致させる必要があります。

Kubernetes ポッドの IP アドレス ブロック

NSX Manager にログインして、1 つ以上の IP アドレス ブロックを作成します。IP アドレス ブロックを CIDR 形式で指定します。

ncp.ini[nsx_v3] セクションで container_ip_blocks オプションを設定して、Kubernetes ポッドの IP アドレス ブロックを指定します。

SNAT 以外の名前空間に IP アドレス ブロックを作成することもできます。

ncp.ini[nsx_v3] セクションで no_snat_ip_blocks オプションを設定して、SNAT 以外の IP アドレス ブロックを指定します。

NCP の実行中に SNAT 以外の IP アドレス ブロックを作成した場合には、NCP を再起動する必要があります。再起動しない場合、IP アドレス ブロックが枯渇するまで、NCP は共有の IP アドレス ブロックを使用し続けます。

注:

IP アドレス ブロックを作成するときに、NCP 構成ファイル ncp.inisubnet_prefix パラメータの値より大きいプリフィックスは使用しないでください。

SNAT の IP アドレス プール

SNAT ルールによってポッドの IP アドレスを変換する場合、または SNAT/DNAT ルールによって Ingress Controller を使用する場合、IP アドレス プールは OpenStack のフローティング IP アドレスと同様に、IP アドレスの割り当てに使用されます。これらの IP アドレスは、外部 IP アドレスともいいます。

複数の Kubernetes クラスタが同じ外部 IP アドレス プールを使用します。各 NCP インスタンスは、管理する Kubernetes クラスタにこのプールのサブセットを使用します。デフォルトでは、ポッドのサブネットと同じサブネット プリフィックスが使用されます。異なるサイズのサブネットを使用するには、ncp.ini[nsx_v3] セクションにある external_subnet_prefix オプションを更新します。

NSX Manager にログインしてプールを作成するか、既存のプールを見つけます。

ncp.ini[nsx_v3] セクションで external_ip_pools オプションを設定して、SNAT の IP アドレス プールを指定します。

サービスにアノテーションを追加して、特定のサービスの SNAT を設定することもできます。次はその例です。

    apiVersion: v1
    kind: Service
    metadata:
      name: svc-example
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
      selector:
        app: example
    ...

NCP によって、このサービスの SNAT ルールが設定されます。このルールの送信元 IP アドレスは、一連のバックエンド ポッドです。宛先 IP アドレスは、指定した外部 IP アドレス プールから割り当てられた SNAT IP アドレスです。次の点に注意してください。

  • ncp/snat_pool で指定された IP アドレス プールは、サービスを設定する前に NSX-T Data Center に配置しておく必要があります。IP アドレス プールには、タグ {"ncp/owner": cluster:<cluster>} を含める必要があります。

  • NSX-T Data Center では、サービスの SNAT ルールの優先順位はプロジェクトよりも高くなります。

  • ポッドに複数の SNAT ルールが設定されている場合は、1 つのルールのみが機能します。

次のタグを IP アドレス プールに追加することで、SNAT の IP アドレス プールから IP アドレスを割り当てる名前空間を指定できます。

  • スコープ:ncp/owner、タグ:ns:<namespace_UUID>

名前空間 UUID は、次のいずれかのコマンドで取得できます。

oc get ns -o yaml

次の点に注意してください。

  • 各タグには 1 つの UUID を指定する必要があります。同じプールに対して複数のタグを作成できます。

  • 古いタグ ベースで一部の名前空間の IP アドレスが割り当てられた後にタグを変更すると、サービスの SNAT 設定が変更されるか NCP が再起動されるまで、割り当て済みの IP アドレスは再利用されません。

  • 名前空間の所有者タグはオプションです。このタグがない場合、任意の名前空間に SNAT IP アドレス プールから IP アドレスを割り当てることができます。

(オプション)ファイアウォールのマーカー セクション

管理者が作成したファイアウォール ルールが、ネットワーク ポリシーに基づいて NCP で作成したファイアウォール セクションに干渉されないようにするには、NSX Manager にログインし、2 つのファイアウォール セクションを作成します。

ncp.ini[nsx_v3] セクションで bottom_firewall_section_marker および top_firewall_section_marker オプションを設定して、マーカー ファイアウォール セクションを指定します。

最下位のファイアウォール セクションは、最上位のファイアウォール セクションの下に配置される必要があります。これらのファイアウォール セクションを作成することで、NCP が分離用に作成するすべてのファイアウォール セクションは、リストの最下位のファイアウォール セクションの上に作成され、NCP がポリシー用に作成するすべてのファイアウォール セクションは、最上位のファイアウォール セクションの下に作成されるようになります。マーカー セクションを作成しない場合、すべての分離ルールはリストの最下位に作成され、すべてのポリシー セクションは最上位に作成されます。同じ値を持つ複数のマーカー ファイアウォール セクションを 1 つのクラスタに設定することはできないため、エラーが発生します。