我们在防火墙后面的私有网络中运行K8S集群,使用讨厌的反向 NAT 规则阻止我们的主机通过公共 IP 连接到自己。
问题
从 pod 内部,我需要连接到203.X.X.X
无法解析为公共 IP 的服务。但是我可以通过私有 IP 连接到这个服务192.Y.Y.Y
我可以在运行 pod 的节点上设置iptables规则,如下所示:
iptables -A OUTPUT -t nat -p tcp -d 203.X.X.X --dport 80 -j DNAT --to-destination 192.Y.Y.Y:80
然后我可以从节点成功连接到服务,但不能从该节点上运行的 pod 连接。
使用hostAliases的解决方案不起作用,因为我们:
- 事先不知道主机名
- 想要将所有到已知公共(无法访问)IP 的流量重新路由到相应的私有 IP
PS:我们使用 calico 作为网络插件