John-Lin / ovs-cni

Apache License 2.0
25 stars 11 forks source link

ovs如何轉發kubernetes的service cluster ip #3

Open zhaixigui opened 6 years ago

zhaixigui commented 6 years ago

hi @John-Lin @hwchiu 我想請教您一些問題,ovs-cni實現了docker和ovs直接連接,但是ovs無法使用iptables,而kubernetes的service部分剛好使用iptables做轉發,您的ovs-cni有解決這個問題么? 還是有其他的解決方案?

John-Lin commented 6 years ago

Hi,

ovs-cni 的確實現 container 與 ovs 的連線,ovs 確實無法操作 iptables ,但是你可以在 source code 看到,我們有實現 ipmasq 的功能來做到 SNAT,換句話說 containers 是可以透過 iptables 去對外部網路做存取。這部分的功能是透過 CNI SDK 來實現, 當 containers 一啟動會接上 ovs ,之後透過 CNI 的 API 依然可以控制 iptables 。

回到你的問題, kubernetes 的 services 是使用 iptables 做轉發, 它與 CNI 較無直接的影響關係,service 是直接控管 host 上面的對外網卡。CNI 只管理到每一個 POD 啟動與刪除時該怎麼對 container 的網路介面做設定,但 kubernetes 的 services依然可以透過 iptables 去寫入規則。

/cc @hwchiu