同じクラスタのノード間のリクエストでソースNATが発生する

同じクラスタのノード間のリクエストでソースNATが発生する

私は、で説明されているのと同じ実験を再現しようとしています。ここ基本的に、この実験は、クラスター内のポッドから同じクラスター内の別のポッドにHTTPリクエストを送信することですが、同じ結果を得ることができません。私は、リクエストを送信したクライアントのIPアドレスでHTTPレスポンスを送信するアプリケーションを持つ別のポッドと同じクラスター内に、次のIP:10.1.97.85/24のポッドを持っています。前述のように、ここ、次のことが当てはまります。

kube-proxy を iptables モードで実行している場合、クラスター内から ClusterIP に送信されたパケットは NAT されることはありません。

上記のテストを実行しましたが、IP アドレス 10.1.97.85/24 のポッドからリクエストを実行すると、IP 10.1.97.1 のポッドからリクエストが送信されたことを示す HTTP 応答が返されます。何が起こっているのかを知りたいです。

上記の実験は、バージョン 1.17.9 の microk8s と kubernetes を使用して実行しましたが、ノードが 1 つしかないため、両方のポッドは同じノード上にあります。

次のコマンドでデプロイメントを作成しました:

microk8s.kubectl create deployment source-ip-app --image=k8s.gcr.io/echoserver:1.4

上記のコマンドは、HTTP 応答で client_address をエコーするアプリケーションを含むポッドを作成しました。

上記のデプロイメントを次のコマンドで公開しました:

microk8s.kubectl expose deployment source-ip-app --name=clusterip --port=80 --target-port=8080

次のコマンドで別のポッドを開始しました:

microk8s.kubectl run busybox -it --image=busybox --restart=Never --rm

そして、上記で作成したポッド内で次のコマンドを実行しました:

ip addr

上記のコマンドで IP アドレス 10.1.97.85 を取得しましたが、サービスに対して wget を実行すると、IP アドレス 10.1.97.85 が返されました。

関連情報