このページでは、ユースケース、関連するコンセプト、用語、メリットなど、Pod のマルチネットワーク サポートについて説明します。
概要
Google Cloud は、仮想マシン(VM)インスタンス レベルで複数のネットワーク インターフェースをサポートしています。複数のネットワーク インターフェースを持つ VM を、最大 8 個のネットワーク(デフォルトのネットワークと 7 個の追加ネットワークなど)に接続できます。
Google Kubernetes Engine(GKE)ネットワーキングは、ノードで実行される Pod にマルチネットワーク機能を拡張します。Pod のマルチネットワーク サポートにより、GKE クラスタ内のノードと Pod で複数のインターフェースを有効にできます。Pod 用のマルチネットワーク サポートにより、ノードプールの単一インターフェースの制限(ネットワーキング向けのノードが単一の VPC に制限される)がなくなります。
Network Function Optimizer(NFO)は、GKE で使用できるネットワーク サービスであり、マルチネットワーク サポート、永続 IP アドレス、高性能な Kubernetes ネイティブ データプレーンを提供します。NFO により、GKE でコンテナ化されたネットワーク機能が有効になります。マルチネットワークは NFO の基礎となる柱の一つです。
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 用のマルチネットワークは、ユーザー プレーンが異なるネットワーク、特定のインターフェースからの高パフォーマンスまたは低レイテンシ、ネットワーク レベルのマルチテナンシーを分離します。コンプライアンス、QoS、セキュリティに必要です。
- 同じ組織とプロジェクト内で VPC を接続する: VPC に GKE クラスタを作成し、別の VPC 内のサービスに接続する必要があります。マルチ NIC ノード オプションを使用して直接接続できます。これは、一元化されたサービス(ロギング、認証)がハブ VPC 内で動作し、スポークがアクセスするためにプライベート接続を必要とするハブアンドスポーク モデルが要因であることが考えられます。Pod のマルチネットワーク サポートを使用すると、GKE クラスタで実行されている Pod をハブ VPC に直接接続できます。
- VFIO を使用して DPDK アプリケーションを実行する: VFIO ドライバを介して、ノードの NIC にアクセスする必要がある DPDK アプリケーションを実行する必要があります。カーネル、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 に直接渡されます。これにより、デバイス間のコラボレーションのレイテンシを最小限に抑えることができます。 - パフォーマンス: アプリケーションのパフォーマンスを向上させるために、アプリケーションのニーズに最も適したネットワークにアプリケーションを接続できます。