我正在嘗試重現相同的實驗,如所解釋的這裡。基本上,該實驗是從叢集內的一個 Pod 向同一叢集內的另一個 Pod 發出 HTTP 請求,但我無法獲得相同的結果。我有一個具有以下 IP 的 pod:10.1.97.85/24,位於另一個 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,該應用程式將在 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