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 と直接通信できます。ゲートウェイや変換は必要ありません。
同様に、ルーティングがネットワーク デバイスで静的に構成されている場合、または特定の 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 は別のクラスタの Pod と直接通信しないため、各クラスタで同じ Pod IP アドレスを使用できます。
アイランド モード ネットワーク モデルの大きなメリットは、Pod IP アドレスがこうして再利用できる点です。
2 つのモデルのメリットとデメリット
2 つのモデルのメリットとデメリットは、次のとおりです。
フラット ネットワークの方がアイランド ネットワークよりも高速です。アイランド モードのゲートウェイではアドレス変換が行われ、その変換に一定のパフォーマンスが犠牲になるためです。
クラスタの問題のデバッグは、フラットなネットワークの方が簡単です。ネットワーク内のすべてが一意の IP アドレスを持っているため、問題が発生している場所の特定が簡単になるからです。たとえば、Pod IP がノードの IP アドレスの背後に隠されないため、問題の原因となっている具体的な Pod の特定が簡単になります。同様に、フラットモードでは、アイランド モードのようにクライアント IP が隠されないことも、デバッグの助けになります。
IP アドレスが少ない場合や、IP 空間が断片化している(つまり、IP アドレスの大きなまとまりがほとんどない)場合は、フラット ネットワーク モデルを使用できないことがあります。その場合は、アイランド ネットワークの方が適しています。
フラットネットワークとアイランド ネットワーク モデルは可能性のあるネットワーク モデルのうちの 2 つにすぎないという点に注意してください。これらのモデル内にもさまざまなバリエーションがあります。