【问题标题】:Iptables Add DNAT rules to forward request on an IP:port to a container portiptables 添加 DNAT 规则以将 IP:port 上的请求转发到容器端口
【发布时间】:2017-05-21 14:13:35
【问题描述】:

我有一个 Kubernetes 集群,它有 2 个接口: eth0:10.10.10.100(内部) eth1:20.20.20.100(外部)

使用 flannel 网络的集群中运行的 pod 很少。 POD1:172.16.54.4(nginx服务)

我想从连接到上述k8s集群的另一台主机访问20.20.20.100:80,这样我就可以到达nginx POD。

我启用了 ip 转发并添加了如下 DNAT 规则:

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.54.4:80

之后,当我尝试在 20.20.20.100 上卷曲时,我得到了

Failed to connect to 10.10.65.161 port 80: Connection refused

我如何让它工作?

【问题讨论】:

标签: kubernetes iptables


【解决方案1】:

你可以试试

iptables -t nat -A PREROUTING -p tcp -d 20.20.20.100 --dport 80 -j DNAT --to-destination 172.16.54.4:80

但是我不建议你自己管理iptables,维护规则很痛苦……

您可以在 k8s 中使用hostPort。您可以使用 kubenet 作为网络插件,因为 cni 插件不支持hostPort

【讨论】:

    【解决方案2】:

    为什么不使用nodeport 类型?我认为这是通过 hostIP 访问服务的更好方法。请尝试iptables -nvL -t nat 并告诉我详细信息。

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 2012-12-22
      • 2014-04-01
      • 2015-12-19
      • 2013-06-22
      • 2020-01-24
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多