2015-11-10 61 views
1

我想访问pod中的一些外部Saas api端点。我使用法兰绒作为kubernetes网络。但是,当我尝试ping一个盒子中的外部IP时,数据包将在没有伪装的情况下发送。所以平不能成功kubernetes内部直接与外部通信?

而且我发现这一点: https://docs.openshift.org/latest/dev_guide/integrating_external_services.html 创建不选择该服务后,并附上相关的终点,我能得到在吊舱外部服务。

我也可以在节点加入iptables MASQUERADE上10.254.0.0/16启用直接访问外部端点:

 iptables -t nat -A -A POSTROUTING -s 10.254.61.0/24 ! -d 10.254.0.0/16 -j MASQUERADE

但是我们能不能就直接访问外部萨斯终点?

在kubernetes或flannel(或其他网络插件?)上是否有可以直接进行内部到外部通信的配置?

感谢

+0

在关于网络kubernetes文件,我也发现了这个[链接](http://kubernetes.io/v1.0/docs/admin/networking.html#google-compute-engine-gce )。这是否意味着iptables伪装是正确的方法? – jim

回答

0

的kubelet将确保iptables的POSTROUTING创建规则,如果你告诉它[1]然而,我怀疑你与--configure-cbr0运行=假的,因为你要允许绒布设置集装箱联网。我相信你能告诉绒布来设置你的规则:

flanneld --help
...用于覆盖网络之外注定交通
-ip-伪装 设置IP伪装规则

[1] https://github.com/kubernetes/kubernetes/blob/b9cfab87e33ea649bdd13a1bd243c502d76e5d22/pkg/kubelet/container_bridge.go#L122

+0

谢谢,正是我想要的。 Flanneld现在可以根据你的帮助设置ip-masq – jim