Kubernetes では、クラスタ外のものがクラスタと通信できることは保証されず、次の機能の提供のみが保証されます。
クラスタ内のすべての Pod は、ネットワーク アドレス変換(NAT)を使用しなくても、直接通信できます。異なるノード上にある Pod 同士も、直接通信できます。
ノード上のエージェント(システム デーモンや kubelet など)は、そのノード上のすべての Pod と通信できます。
ネットワークが以下に示すように 2 つのクラスタをホストしている場合、クラスタ 1 の Pod がクラスタ 2 の Pod とどのように通信するでしょうか。同様に、図の「その他のクライアント」や「その他のサーバー」とマークされたクラスタ外のクライアントやサーバーが、クラスタ内の Pod と通信するにはどうすればよいでしょうか。
このドキュメントでは、このような問いに対して、「フラットモード」ネットワーク モデルと「アイランド モード」ネットワーク モデルとでどのような違いがあるかを説明します。
フラットモード ネットワーク モデル
完全統合ネットワークやフラットモード ネットワークでは、Pod にはクラスタ全体で一意の IP アドレスが割り振られます。たとえば、クラスタ 1 にある Pod-A
の IP アドレスは、クラスタ 1 やクラスタ 2 の別の場所にはありません。同様に、クラスタ 2 内の Pod-G
には、両方のクラスタで一意のアドレスがあります。つまり、クラスタ 1 の Pod は、クラスタ 2 の任意の Pod と直接通信できます(トラフィックをブロックするファイアウォールやその他のポリシーがないと仮定した場合)。Pod 間の通信にゲートウェイやアドレス変換は必要ありません。
同様に、ルーティングがネットワーク デバイスで静的に構成されている場合、または特定の IP 範囲のトラフィックを処理できるようにアドバタイズするために Border Gateway Protocol(BGP)を使用している場合、クラスタ外のクライアントとサーバーは、Pod の一意の IP アドレスを使用してクラスタ内の Pod と直接通信できます。
したがって、フラットなネットワークでの通信は、簡単で直接的です。IP アドレスの重複はなく、オーバーレイ ネットワークや NAT を使用する必要がありません。
アイランド モード ネットワーク モデル
フラットモードのネットワーク モデルは、大規模な IP アドレス空間を用意する余裕があり、各 Pod に一意の IP アドレスを割り振ることが可能な場合に利用できます。しかし、大規模な IP アドレス空間を使用できない場合は、アイランド モード ネットワーク モデルが適しています。
アイランド モード ネットワークでは、限られた IP アドレスで経済的に済ませるため、ノードには一意の IP アドレスを使用しますが、Pod にはクラスタ全体で一意となるアドレスは使用されません。あるクラスタの Pod が別のクラスタの Pod と直接通信することはないため、これが問題になることはありません。その代わりに、次の図に示すように、あるクラスタの Pod と別のクラスタの Pod との間を仲介するゲートウェイがあります。
同様に、クライアントからクラスタへ送信される上り(内向き)トラフィックと、クラスタから出る下り(外向き)トラフィックは、同じようなゲートウェイによって処理されます。ゲートウェイはさまざまな方法で実装されます。たとえば、NAT、仮想 IP アドレス(VIP)、プロキシなどはゲートウェイの一例です。それらは、Pod の IP アドレス変換を行い、Pod の IP を非公開にします。
アイランド モード ネットワーク モデルでは、各クラスタで同じ Pod IP アドレスを使用できます。つまり、Pod IP アドレスはクラスタ間で一意である必要はありません。次の図に示すように、あるクラスタの Pod は別のクラスタの Pod と直接通信しないため、各クラスタで同じ Pod IP アドレスを使用できます。
アイランド モード ネットワーク モデルの大きなメリットは、Pod IP アドレスを再利用できる点です。
2 つのモデルのメリットとデメリット
2 つのモデルのメリットとデメリットは、次のとおりです。
フラット ネットワークのほうがアイランド ネットワークよりも高速です。アイランド モードのゲートウェイではアドレス変換が行われ、その変換により、一定のパフォーマンスが犠牲になるためです。
クラスタの問題のデバッグは、フラット ネットワークのほうが簡単です。ネットワーク内のすべてが一意の IP アドレスを持っているため、問題が発生している場所の特定が簡単になります。たとえば、Pod IP がノードの IP アドレスの背後に隠されないため、問題の原因となっている具体的な Pod の特定が簡単になります。同様に、フラットモードでは、アイランド モードのようにクライアント IP が隠されないこともデバッグの助けになります。
IP アドレスが少ない場合や、IP 空間が断片化している(IP アドレスの大きなまとまりがほとんどない)ため、フラット ネットワーク モデルを使用できない場合があります。その場合は、アイランド ネットワークのほうが適しています。
フラット ネットワークとアイランド ネットワーク モデルは可能性のあるネットワーク モデルの中の 2 つにすぎません。また、これらのモデルにもさまざまなバリエーションがあります。