我正在尝试重现与解释相同的实验这里。基本上,这个实验是关于从集群内的一个 pod 向同一集群内的另一个 pod 发出 HTTP 请求,但我无法获得相同的结果。我有一个 pod,其 IP 为:10.1.97.85/24,与另一个 pod 位于同一集群中,该 pod 有一个应用程序,该应用程序使用发送请求的客户端的 IP 地址发送 HTTP 响应。正如所说这里,以下说法正确的是:
如果你在 iptables 模式下运行 kube-proxy,那么从集群内部发送到 ClusterIP 的数据包永远不会经过 NAT
我已经执行了上面提到的测试,但是当我从 IP 地址为 10.1.97.85/24 的 pod 执行请求时,我收到一个 HTTP 响应,说该请求是由 IP 为 10.1.97.1 的 pod 发送的,我想知道发生了什么。
我已经使用 1.17.9 版本的 microk8s 和 kubernetes 进行了上述实验,并且由于我只有一个节点,所以两个 pod 都在同一个节点上。
我已经使用以下命令创建了部署:
microk8s.kubectl create deployment source-ip-app --image=k8s.gcr.io/echoserver:1.4
上述命令创建了带有应用程序的 pod,该 pod 将在 HTTP 响应中回显 client_address。
我已经使用以下命令公开了上述部署:
microk8s.kubectl expose deployment source-ip-app --name=clusterip --port=80 --target-port=8080
我已经使用以下命令启动了另一个 pod:
microk8s.kubectl run busybox -it --image=busybox --restart=Never --rm
在上面创建的 pod 中我执行了以下命令:
ip addr
使用上述命令我获得了 ip 地址:10.1.97.85 但是当我对服务执行 wget 时我收到了 ip 地址:10.1.97.85