私は、で説明されているのと同じ実験を再現しようとしています。ここ基本的に、この実験は、クラスター内のポッドから同じクラスター内の別のポッドに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 が返されました。