圖解-Kubernetes&OpenShift容器網(wǎng)絡(luò)發(fā)展
與傳統(tǒng)的虛擬化相比,Kubernetes容器的生命周期更短、數(shù)量密度更高、集群變更速度更快。容器網(wǎng)絡(luò)就必須對(duì)集群節(jié)點(diǎn)之間的高速通信進(jìn)行充分的考量。除此之外,在企業(yè)級(jí)的容器云平臺(tái)上,承載眾多租戶的計(jì)算負(fù)載之間資源的安全隔離,也必須要考慮到的因素。
顯而易見,傳統(tǒng)的物理網(wǎng)絡(luò)架構(gòu)無法滿足容器高靈活性的需求,容器網(wǎng)絡(luò)必須要有一種嶄新的設(shè)計(jì)架構(gòu)。Kubernetes快速發(fā)展演進(jìn),其中網(wǎng)絡(luò)這塊發(fā)展變革最快,生態(tài)最繁榮。
容器網(wǎng)絡(luò)的發(fā)展,從Docker主導(dǎo)的CNM模型,演進(jìn)到Google、CoreOS、Kubernetes主導(dǎo)的CNI模型。CNM與CNI并不是網(wǎng)絡(luò)的實(shí)現(xiàn),而是網(wǎng)絡(luò)規(guī)范和網(wǎng)絡(luò)體系。當(dāng)前,容器網(wǎng)絡(luò)CNI基本是事實(shí)的標(biāo)準(zhǔn),除了背后開源社區(qū)的陣營不同,更多是技術(shù)迭代演進(jìn),架構(gòu)優(yōu)化調(diào)整。與Kubernetes在最新版本開始解耦Docker一樣。下圖是容器網(wǎng)絡(luò)發(fā)展脈絡(luò),從運(yùn)行效率與管理效率兩個(gè)方面推動(dòng)容器持續(xù)迭代優(yōu)化。
1、單節(jié)點(diǎn)容器網(wǎng)絡(luò)
容器單節(jié)點(diǎn)網(wǎng)絡(luò),在單個(gè)容器主機(jī),通過Bridge或者M(jìn)acvlan等方式實(shí)現(xiàn)共享宿主機(jī)物理網(wǎng)卡,多個(gè)容器使用“端口映射”的方式共享容器主機(jī)IP地址。存在問題是如何進(jìn)行大規(guī)模管理,容器間跨主機(jī)無需經(jīng)過NAT無法直接通信。如下圖所示:
2、Kubernetes Flannel網(wǎng)絡(luò)
Kubernetes Flannel網(wǎng)絡(luò),實(shí)現(xiàn)容器主機(jī)集群和跨節(jié)點(diǎn)Pod直連,每個(gè)容器主機(jī)分配一個(gè)網(wǎng)段用于容器內(nèi)Pod互聯(lián)。通過VxLAN協(xié)議封裝實(shí)現(xiàn)Overlay容器網(wǎng)絡(luò),容器IP在物理網(wǎng)絡(luò)上傳輸時(shí)使用物理機(jī)IP,其真實(shí)IP會(huì)被封裝在VxLAN協(xié)議中。每個(gè)機(jī)器上有一個(gè)flanneld服務(wù)進(jìn)行外部網(wǎng)絡(luò)通信時(shí)的封包和解包。存在問題是雖然大二層帶來了連通的便利,但是管控、訪問控制、租戶隔離沒有實(shí)現(xiàn),如下圖所示:
3、多租戶 + NetworkPolicy容器網(wǎng)絡(luò)
多租戶 + NetworkPolicy容器網(wǎng)絡(luò),Openshift v3 OVS網(wǎng)絡(luò)就是基于這個(gè)思路已經(jīng)實(shí)現(xiàn)。通過VxLAN實(shí)現(xiàn)跨集群互通,使用可編程OVS流表控制每個(gè)節(jié)點(diǎn)上的容器流量轉(zhuǎn)發(fā)控制,多租戶之間的網(wǎng)絡(luò)NetworkPolicy控制,基于Namespace級(jí)別控制,基于Pod、端口的控制。存在問題是OVS和流表依然是單機(jī),大量的流程編程工作,SVC和LB暴露依賴iptables,性能開銷較大,如下圖所示。
4、SDN容器網(wǎng)絡(luò)
SDN容器網(wǎng)絡(luò),隨著技術(shù)快速的發(fā)展,尤其是近幾年大型國企數(shù)字化轉(zhuǎn)型加速,各種各樣的應(yīng)用容器化運(yùn)行之后,OVS容器網(wǎng)絡(luò)的局限性開始突顯。首先就是統(tǒng)一控制平面效率不高。其次是OVS借助每個(gè)節(jié)點(diǎn)上iptables實(shí)現(xiàn),iptables實(shí)現(xiàn)NAT時(shí)性能開銷大,同時(shí)Kubernetes Service管理復(fù)雜。最后是IPv6與Windows等新需求難以支持。
OVN是從OVS發(fā)展演進(jìn)而來,是openvSwitch原生控制層實(shí)現(xiàn),用于將分布式的openvSwitch交換機(jī)統(tǒng)一管理。OVN是集中式SDN控制器,實(shí)現(xiàn)集群層面做網(wǎng)絡(luò)編排,管理組件高可用,使用OpenFlow控制協(xié)議,利用OVS實(shí)現(xiàn)網(wǎng)絡(luò)轉(zhuǎn)發(fā)。
5、總結(jié)
OVN雖然很多功能(LB,Gateway,DNS, DHCP)依然使用OVS進(jìn)行底層流量轉(zhuǎn)發(fā),但是大幅度提升了上層應(yīng)用(Openstack、Kubernetes、Openshift)的管理能力。與其他的kubernetes CNI網(wǎng)絡(luò)插件相比,OVN是真正的SDN!
本文轉(zhuǎn)載自微信公眾號(hào)「巨子嘉」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系巨子嘉公眾號(hào)。