第一種:協議棧二層。協議棧二層比較好理解,在以前傳統的機房或虛擬化場景中比較常見,就是基於橋接的 ARP+MAC 學習,它有什麼缺陷呢?它最大的缺陷是廣播。因為二層的廣播,會限制節點的量級。
第二種:協議棧三層(純路由轉發)。協議棧三層一般基於 BGP,自主學習整個機房的路由狀態。它最大的優點是它的 IP 穿透性,也就是說只要是基於這個 IP 的網路,那此網路就可以去穿越。顯而易見,它的規模是非常有優勢,且具有良好的量級擴展性。但它也存在問題:在實際部署過程中,因為企業的網路大多受控。比如,有時企業網路的 BGP 是基於安全考慮不給開發者用,或者說企業網路本身不是 BGP,那這種情況下你就沒辦法了。
第三種:協議棧二層加三層。為什麼會出現這種方案?在說二層加三層的優點之前,先提一下它的缺點。缺點是節點內部是一個子網,這對於運維同學來說很苦惱。因為大家都習慣利用傳統的雲化場景,希望每一個獨立可見的應用有一個獨立的 IP,且不會改變。這一點,二層加三層做不到。但是這個方案比較符合 Kubernetes 對於 Pod 網路假設,Pod 會漂移,IP 也會改變,不變的是 Service 和 Ingress。
但它的優點是它能夠解決純二層的規模性問題,又能解決純三層的各種限制問題,特別是在雲化 VPC 場景下可以利用 VPC 的三層轉發能力。所以,如今你看到的實際部署 Kubernetes 的網路方案中,二層加三層也比較多。後面的章節,我們再詳述那些常見的方案。
Underlay:在一個較好的一個可控的網路場景下,我們一般利用 Underlay。可以這樣通俗的理解,無論下面是裸機還是虛擬機,只要網路可控,整個容器的網路便可直接穿過去 ,這就是 Underlay。
Overlay:Overlay 在雲化場景比較常見。Overlay 下面是受控的 VPC 網路,當出現不屬於 VPC 管轄範圍中的 IP 或者 MAC,VPC 將不允許此 IP/MAC 穿越。出現這種情況時,我們都利用 Overlay 方式來做。