Kubernetes選擇CNI外掛的11個注意事項
原文發表於kubernetes中文社群,為作者原創翻譯 ,原文地址
更多kubernetes文章,請多關注kubernetes中文社群
目錄
1. 依賴軟體定義的網路(Software Defined Networking)
雲原生應用程式的時代,引入了思考網路架構的新方法。
Kubernetes網路被設計為一種乾淨的,向後相容的模型,從而消除了將容器埠對映到主機埠的需求。為了支援這一點,Kubernetes引入了許多圍繞網路的基本結構,例如Pod網路,服務,叢集IP,容器埠,主機埠和節點埠,這些將使用者從底層基礎結構中解放出來。
儘管Kubernetes中有許多網路基礎的構建,但Kubernetes仍然存在許多故意的空白以使其與基礎架構無關。網路中的這些空白大部分由網路外掛填補,這些外掛通過容器網路介面(CNI)與Kubernetes互動。
CNI外掛的常見限制
Kubernetes使用外掛模型進行網路連線,使用CNI來管理叢集上的網路資源。大多數常見的CNI外掛利用overlay networking(覆蓋網路),該網路在現有第2層(L2)網路之上在叢集內部建立了私有第3層(L3)網路。
使用這些CNI外掛,專用網路只能由叢集中的Pod訪問。在節點之間甚至在叢集外部交換資料包的過程在很大程度上取決於iptable規則以及專用和公用IP地址的網路地址轉換(NAT)。
這些CNI外掛的一些示例是Open vSwitch(OVS),Calico,Flannel,Canal和Weave。
每個可用於Kubernetes的網路CNI外掛都有其優缺點。讓我們探討一下CNI外掛的一些常見限制:
1. 依賴軟體定義的網路(Software Defined Networking)
SDN(Software Defined Networking)網路功能是作為軟體裝置提供的,從而增加了各種複雜性,包括其他iptables和NATing。
SDN軟體消耗了15%到20%的可用主機資源(CPU和記憶體),從而降低了效率並增加了執行實際應用程式所需的資源數量。
2. 在叢集外公開應用程式
由於大多數聯網解決方案都使用L3聯網,因此Pod IP的存在位於叢集本身內。將這些Pod暴露於外界仍然是一個挑戰。Kubernetes利用ServiceType中的“ NodePort”和“ LoadBalancers”公開應用程式。
ServiceType中的 NodePort通過在主機網路介面隨機唯一埠上,路由在節點上執行的所有應用程式。
在公共雲中,雲負載均衡器的可用性使生活變得更加輕鬆,因為它會自動將公共IP分配給Kubernetes中ServiceType為 LoadBalancer的服務。但是,此功能不適用於本地雲。諸如MetalLB之類的解決方案可以用來解決此問題,但是它們有其自身的侷限性和挑戰。
3. 通過主機網路路由所有流量
當使用用ServiceType中的“ NodePort”和“ LoadBalancers”時,Kubernetes利用主機網路介面路由所有流量。由於安全性和效能問題,這不是企業環境中的理想方案。
NodePort和Loadblancer服務的資料包流
4. 流量隔離
大多數Kubernetes網路解決方案都使用相同的物理網路(主機網路)介面來處理各種流量。
這意味著控制,pod和儲存流量共享同一網路介面。這可能會帶來安全風險,並且還會影響Kubernetes控制平面的效能,因為Pod和儲存流量很容易消耗可用頻寬(反之亦然)。
5. 負載不均衡
大多數網路解決方案都依賴於外部負載均衡器,當Pod分佈在叢集中的多個節點上時,這不是問題。
但是,同一後端服務的多個Pod也可以在同一節點上執行。這可能會導致負載不平衡問題,因為外部負載均衡器只能在節點之間進行負載均衡,而不能在Pod之間進行負載均衡。
6. 額外 hops
1)在資料包轉發網路中,hop指資料包經過路由器或直接通過節點轉移到其他網路的過程。在網際網路或者採用TCP/IP協議的網路中,hop數目會在資料包的包頭上面有所記錄。如果hop數目過大,就將此資料包忽略掉。
2)在蜂窩式數字分組資料(CDPD)中,hop是指到別的射頻通道的交換過程。
參考自:https://searchcio.techtarget.com.cn/whatis/8-24231/
在L3網路中,外部訪問總是通過暴露節點本身上的介面或埠來完成的。在這種情況下,如果請求通過錯誤的節點,則Pod和外部通訊可能會產生額外的hop,從而影響效能和延遲。
7. 多宿主網路
在許多情況下,該應用程式可能需要用於Pod網路的多個介面,以便它可以連線到不同的隔離網路/子網。目前,大多數CNI外掛均不支援多個介面。
8. 靜態端點配置
Kubernetes中的Pod IP是動態的,並且在Pod重新啟動時會更改。大多數CNI外掛不支援為Pod分配靜態端點或IP。
這意味著只能通過服務公開Pod,這對於某些型別的部署可能不是理想的選擇。
9. Noisy Neighbors 和SLA效能
在同一節點上執行多個應用程式時,來自每個應用程式的流量都流經同一網路管道。如果一個應用程式行為不正常,則可能會影響其他應用程式的效能。
大多數CNI外掛不支援在應用程式級別提供網路效能保證。
10. 多區域支援
高可用性對任何組織都至關重要,並且已成為生產Kubernetes部署中的要求。
擁有對多區域叢集的網路支援非常重要,該支援可將應用分佈在不同的域中。
11. 儲存流量無分隔
大多數CNI外掛無法區分儲存流量和常規流量。他們使用相同的共享介面來進行儲存資料交換,從而導致網路和儲存流量(在某些情況下甚至控制流量)相互競爭。這會影響效能和安全性。
另一種聯網方法Diamanti
Diamanti憑藉其獨特的網路體系結構解決了常見CNI外掛中發現的大多數缺點。
Diamanti的Kubernetes資料平面解決方案內建了對L2網路的支援,並且硬體解除安裝了智慧NIC。這允許將真正的L2 MAC地址分配給外部可路由網路上的每個Pod,從而使聯網更加容易。它還支援使用OVS的L3overlay networking(覆蓋網路),流量隔離,VLAN/VXLAN分段,多宿主網路,靜態端點配置,網路感知排程,有保證的SLA以及許多其他獨特功能。
你可以在Diamanti網站上檢視有關Diamanti網路體系結構的更多詳細資訊。
Kubernetes中的網路堆疊是企業生產部署中最重要的架構決策之一。在為基礎架構選擇CNI外掛時,需要注意其侷限性,並確定最適合你的外掛。
譯文連結:https://thenewstack.io/top-considerations-when-selecting-cni-plugins-for-kubernetes/
相關文章
- Kubernetes CNI網路外掛
- 域名選擇注意事項
- 選擇SEO外包注意事項
- Kubernetes CNI 外掛選型和應用場景探討
- Select 選擇器使用注意事項
- 選擇代理ip注意事項介紹
- 選擇物聯網路卡需要注意的事項
- 幾點需要注意選擇APP開發外包團隊的注意事項APP
- 如何選擇適合的伺服器【5大注意事項】?伺服器
- 如何選擇適合自己的機房【5大注意事項】?
- 2022年選擇軟體外包公司合作注意事項
- 華納雲:選擇香港遊戲伺服器的注意事項遊戲伺服器
- 選擇雲端儲存服務需要注意哪些事項?
- 選擇香港伺服器需要注意哪些事項?這4點事項要牢記!伺服器
- 使用HTTP的三個注意事項HTTP
- 使用 vite 構建一個表情選擇外掛Vite
- 給模切行業一些選擇ERP系統的注意事項行業
- AlloyTouch之select選擇外掛
- 解讀:生物技術圖紙管理軟體怎麼選擇?選擇軟體時注意事項
- in App Purchases一個注意事項APP
- 伺服器租用該如何選擇?注意這五大事項!伺服器
- 做SAP freelancer 的幾個注意事項
- 小遊戲引擎選型注意事項遊戲引擎
- 免費OA系統選購的注意事項
- OA系統在選型時的注意事項
- 外貿企業建站有哪些注意事項
- 從零開始入門 K8s | 理解 CNI 和 CNI 外掛K8S
- 乾式電抗器的價格和供應商選擇有哪些注意事項?
- 關停一個產品的注意事項
- ERP選型準備、方法及注意事項
- 外貿企業建站有哪些注意事項呢?
- 聊聊外貿企業自建網站注意事項網站
- @Lombok注意事項Lombok
- RandomAccessFile注意事項randomMac
- Oracle使用*的注意事項Oracle
- 換工作的注意事項
- 企業選型CRM系統,這七個事項務必注意
- 電腦機箱選購注意事項 選購機箱需要注意哪些?