Kubernetes:保留源IP /将外部IP作为源

对不起,如果标题和标签有点模糊,我还是无法弄清楚它的正确名词。 请指教,我会改变它。

我正在实施一个STUN服务器,它装在托pipe在Google Container Engine的Kubernetes上的Docker容器中。 该项目利用负载平衡器(GCE上的转发规则)将外部请求置于pod / container中的相应端口,

我已经通过以下路由将进入eth0的所有stream量路由到2个虚拟接口(eth0:1,eth0:2):

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 61214 -j DNAT --to-destination 172.26.0.6 

(为了完整起见,第二个目的地是172.26.0.7)

一个客户端应用程序到达它就好了,所以NAT确定继续。 但是,当STUN服务器需要创build套接字并链接回客户端应用程序时,这会突然停止,因为它获得的源IP是Kubernetes(例如10.128.0.4)上的主机VM实例的内部IP。 由于没有连接,客户端和服务器套接字超时。

有没有办法保存实际的源地址,直到到达我的服务器应用程序? 只要我的请求到达服务器,并且服务器可以返回到客户端,我打开废除当前的设置。

谢谢。

我很高兴地发现,这是解决scheme存在并且及时提供(即刚推出testing版)的那些不常见的案例之一。

不幸的是,它只是针对我们的情况,即Kubernetes over GCE / GKE。 截至本文撰写之时,其他平台(例如AWS)的用户将需要使用其他解决scheme。