The Kubernetes network model 5 ▌3つの条件を満たす実装なら何でもよい ⚫ Pods on a node can communicate with all pods on all nodes without NAT ⚫ Agents on a node (e.g. system daemons, kubelet) can communicate with all pods on that node ⚫ Pods in the host network of a node can communicate with all pods on all nodes without NAT ▌実装次第なもの ⚫IP アドレスの割り当て方式 ⚫Pod と Node の通信方式 ⚫ルーティング方式 ⚫外部ネットワークとの通信方式 Kubernetes Meetup Tokyo #35
ルーティングソフトウェアとの連携 34 ▌各ノードが持つアドレスブロックを広告する必要がある ⚫Coil はブロックをカーネルのルーティングテーブル 119 に出力 ⚫ルーティングソフトウェアはテーブル 119 をインポートして広告 Kubernetes Meetup Tokyo #35 $ ip route show table 119 10.64.1.64/27 dev lo proto 30 103.79.13.194 dev lo proto 30 $ birdc show route table coiltab Table coiltab: 103.79.13.194/32 unicast [coil 2020-10-16] (10) dev lo 10.64.1.64/27 unicast [coil 2020-10-16] (10) dev lo
クライアント Pod → Egress Pod 42 ▌外向けのパケットをそのまま送ると、Egress Pod に届かず捨てられてしまう ▌Egress の宛先ネットワークに送るパケットは、 Foo-over-UDP でトンネルして送る ⚫トンネル方式は色々あるが、Foo-over-UDP は UDP パケットなので Service で冗長化できる Kubernetes Meetup Tokyo #35