Pod のマルチネットワーク サポートについて

このページでは、ユースケース、関連するコンセプト、用語、メリットなど、Pod のマルチネットワーク サポートについて説明します。

概要

Google Cloud は、仮想マシン(VM)インスタンス レベルで複数のネットワーク インターフェースをサポートしています。複数のネットワーク インターフェースを持つ VM を、最大 8 個のネットワーク(デフォルトのネットワークと 7 個の追加ネットワークなど)に接続できます。

Google Kubernetes Engine(GKE)ネットワーキングは、ノードで実行される Pod にマルチネットワーク機能を拡張します。Pod のマルチネットワーク サポートにより、GKE クラスタ内のノードと Pod で複数のインターフェースを有効にできます。Pod のマルチネットワーク サポートにより、ノードプールの単一インターフェースの制限(ネットワークのノードが単一の VPC に制限される)がなくなります。

Pod とノードに対するマルチネットワーク サポートの活用については、Pod のマルチネットワーク サポートを設定するをご覧ください。

用語と概念

このページでは、次のコンセプトを使用します。

プライマリ VPC: プライマリ VPC は事前構成済みの VPC であり、デフォルトの設定とリソースが含まれています。GKE クラスタはこの VPC に作成されます。事前構成された VPC を削除すると、プライマリ VPC に GKE クラスタが作成されます。

サブネット: Google Cloudにおいてサブネットは、VPC でネットマスクを使用するクラスレス ドメイン間ルーティング(CIDR)を作成する方法です。サブネットには、ノードに割り当てられる単一のプライマリ IP アドレス範囲があり、Pod と Service に属する複数のセカンダリ範囲を設定できます。

ノード ネットワーク: ノード ネットワークは、VPC とサブネットのペアの専用の組み合わせを指します。このノード ネットワーク内で、ノードプールに属するノードには、プライマリ IP アドレス範囲から IP アドレスが割り振られます。

セカンダリ範囲: Google Cloud のセカンダリ範囲は、サブネットに属する CIDR とネットマスクです。GKE はこれをレイヤ 3 Pod ネットワークとして使用します。Pod は複数の Pod ネットワークに接続できます。

Pod ネットワーク: Pod の接続ポイントとして機能するネットワーク オブジェクト。接続は Layer 3 または Device のいずれかのタイプです。Device タイプのネットワークは、netdevice モードまたはデータプレーン開発キット(DPDK)モードで構成できます。

Layer 3 ネットワークは、サブネットのセカンダリ範囲に対応します。Device ネットワークは、VPC のサブネットに対応します。GKE マルチネットワークの Pod ネットワークのデータモデルは次のとおりです。

  • Layer 3 ネットワークの場合: VPC -> サブネット名 -> セカンダリ範囲名

  • Device ネットワークの場合: VPC -> サブネット名

デフォルトの Pod ネットワーク: Google Cloud は、クラスタの作成時にデフォルトの Pod ネットワークを作成します。デフォルトの Pod ネットワークでは、ノード ネットワークとしてプライマリ VPC を使用します。デフォルトの Pod ネットワークは、デフォルトですべてのクラスタノードと Pod で使用できます。

複数のインターフェースを提供する Pod: Pod の複数のインターフェースで同じ Pod ネットワークに接続することはできません。

次の図は、Layer 3 ネットワークを使用した一般的な GKE クラスタ アーキテクチャを示しています。

マルチネットワーク クラスタ

netdevice モードまたは DPDK モードで構成できる Device タイプのネットワークの場合、VM vNIC はリソースとして管理され、Pod に渡されます。この場合、Pod ネットワークはノード ネットワークに直接マッピングされます。Device タイプのネットワークにセカンダリ範囲は必要ありません。

Pod ネットワークとノード ネットワーク

ユースケース

Pod のマルチネットワーク サポートは、次のユースケースに対応しています。

  • コンテナ化されたネットワーク機能をデプロイする: データプレーンと管理プレーンが分離されているコンテナでネットワーク機能を実行する場合。Pod 用のマルチネットワークは、ユーザー プレーンが異なるネットワーク、特定のインターフェースからの高パフォーマンスまたは低レイテンシのネットワーク、ネットワーク レベルのマルチテナンシーを分離します。コンプライアンス、QoS、セキュリティに必要です。
  • 同じ組織とプロジェクト内で VPC を接続する: VPC に GKE クラスタを作成し、別の VPC 内のサービスに接続する場合に、マルチ NIC ノード オプションを使用して直接、接続できます。これは、一元化されたサービス(ロギング、認証)がハブ VPC 内で動作し、スポークがアクセスするためにプライベート接続を必要とするハブアンドスポーク モデルが要因であることが考えられます。Pod のマルチネットワーク サポートを使用すると、GKE クラスタで実行されている Pod を直接ハブ VPC に接続できます。
  • VFIO を使用して DPDK アプリケーションを実行する: ノードの NIC にアクセスする必要がある DPDK アプリケーションを、VFIO ドライバを介して実行する場合に、カーネル、Kubernetes、GKE Dataplane V2 を完全にバイパスすることで、最適なパケットレートを実現できます。
  • Kubernetes と GKE Dataplane V2 をバイパスする vNIC への直接アクセスを有効にする: ノードのネットワーク インターフェース カード(NIC)に直接アクセスする必要があるコンテナで、ネットワーク機能を実行します。たとえば、レイテンシを最小限に抑えるために Kubernetes と GKE Dataplane V2 をバイパスする必要がある、ハイ パフォーマンス コンピューティング(HPC)アプリケーションです。また、アプリケーションの中には、NIC の PCIe トポロジ情報にアクセスして、GPU などの他のデバイスと同じ場所に配置することが必要なものもあります。

利点

Pod のマルチネットワーク サポートには、次の利点があります。

  • トラフィックの分離: Pod のマルチネットワーク サポートにより、GKE クラスタ内のトラフィックを分離できます。複数のネットワーク インターフェースを提供する Pod を作成し、特定のクラウド ネイティブ機能(CNF)を実行する Pod 内で、管理やデータプレーンなどの機能に基づいてトラフィックを分離できます。
  • デュアルホーミング: デュアルホーミングでは、Pod にインターフェースを複数設定し、トラフィックを異なる VPC にルーティングできます。これにより、Pod はプライマリ VPC およびセカンダリ VPC の両方と接続を確立できます。1 つの VPC で問題が発生した場合、アプリケーションはセカンダリ VPC にフォールバックできます。
  • ネットワーク セグメンテーション: Pod は、ワークロードのニーズに基づいて内部または外部のネットワークに接続できます。ワークロードの特定の要件に応じて、どの Pod または Pod のグループを各ネットワークに接続するかを選択できます。たとえば、East-West 通信に内部ネットワークを使用し、インターネット アクセスに外部ネットワークを使用できます。これにより、ワークロードの固有のニーズに基づいてネットワーク接続を調整できます。
  • DPDK による最適なパフォーマンス: GKE の Pod に対するマルチネットワークのサポートにより、DPDK アプリケーションを GKE Pod で実行できるようになり、パケット処理のパフォーマンスが最適化されます。
  • ホスト NIC が Pod で直接使用可能: マルチネットワークで netdevice モードの NIC がサポートされていることにより、Kubernetes と GKE Dataplane V2 をバイパスして、VM NIC が Pod に直接渡されます。これにより、デバイス間のコラボレーションでレイテンシを最小限に抑えることができます。
  • パフォーマンス: アプリケーションのパフォーマンスを向上させるために、アプリケーションのニーズに最も適したネットワークにアプリケーションを接続できます。

次のステップ