2015-11-10 136 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