新聞中心
集群網(wǎng)絡(luò)系統(tǒng)
集群網(wǎng)絡(luò)系統(tǒng)是 Kubernetes 的核心部分,但是想要準(zhǔn)確了解它的工作原理可是個不小的挑戰(zhàn)。 下面列出的是網(wǎng)絡(luò)系統(tǒng)的的四個主要問題:

我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、大峪ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的大峪網(wǎng)站制作公司
- 高度耦合的容器間通信:這個已經(jīng)被 Pods 和 ?
localhost?通信解決了。 - Pod 間通信:這個是本文檔的重點要講述的。
- Pod 和服務(wù)間通信:這個已經(jīng)在服務(wù)里講述過了。
- 外部和服務(wù)間通信:這也已經(jīng)在服務(wù)講述過了。
Kubernetes 的宗旨就是在應(yīng)用之間共享機(jī)器。 通常來說,共享機(jī)器需要兩個應(yīng)用之間不能使用相同的端口,但是在多個應(yīng)用開發(fā)者之間 去大規(guī)模地協(xié)調(diào)端口是件很困難的事情,尤其是還要讓用戶暴露在他們控制范圍之外的集群級別的問題上。
動態(tài)分配端口也會給系統(tǒng)帶來很多復(fù)雜度 - 每個應(yīng)用都需要設(shè)置一個端口的參數(shù), 而 API 服務(wù)器還需要知道如何將動態(tài)端口數(shù)值插入到配置模塊中,服務(wù)也需要知道如何找到對方等等。 與其去解決這些問題,Kubernetes 選擇了其他不同的方法。
如何實現(xiàn) Kubernetes 的網(wǎng)絡(luò)模型
有很多種方式可以實現(xiàn)這種網(wǎng)絡(luò)模型,本文檔并不是對各種實現(xiàn)技術(shù)的詳細(xì)研究, 但是希望可以作為對各種技術(shù)的詳細(xì)介紹,并且成為你研究的起點。
接下來的網(wǎng)絡(luò)技術(shù)是按照首字母排序,順序本身并無其他意義。
ACI
Cisco Application Centric Infrastructure 提供了一個集成覆蓋網(wǎng)絡(luò)和底層 SDN 的解決方案來支持容器、虛擬機(jī)和其他裸機(jī)服務(wù)器。 ACI 為 ACI 提供了容器網(wǎng)絡(luò)集成。 點擊這里查看概述。
Antrea
Antrea 項目是一個開源的聯(lián)網(wǎng)解決方案,旨在成為 Kubernetes 原生的網(wǎng)絡(luò)解決方案。它利用 Open vSwitch 作為網(wǎng)絡(luò)數(shù)據(jù)平面。 Open vSwitch 是一個高性能可編程的虛擬交換機(jī),支持 Linux 和 Windows 平臺。 Open vSwitch 使 Antrea 能夠以高性能和高效的方式實現(xiàn) Kubernetes 的網(wǎng)絡(luò)策略。 借助 Open vSwitch 可編程的特性,Antrea 能夠在 Open vSwitch 之上實現(xiàn)廣泛的聯(lián)網(wǎng)、安全功能和服務(wù)。
Kubernetes 的 AWS VPC CNI
AWS VPC CNI 為 Kubernetes 集群提供了集成的 AWS 虛擬私有云(VPC)網(wǎng)絡(luò)。該 CNI 插件提供了高吞吐量和可用性,低延遲以及最小的網(wǎng)絡(luò)抖動。 此外,用戶可以使用現(xiàn)有的 AWS VPC 網(wǎng)絡(luò)和安全最佳實踐來構(gòu)建 Kubernetes 集群。 這包括使用 VPC 流日志、VPC 路由策略和安全組進(jìn)行網(wǎng)絡(luò)流量隔離的功能。
使用該 CNI 插件,可使 Kubernetes Pod 擁有與在 VPC 網(wǎng)絡(luò)上相同的 IP 地址。 CNI 將 AWS 彈性網(wǎng)絡(luò)接口(ENI)分配給每個 Kubernetes 節(jié)點,并將每個 ENI 的輔助 IP 范圍用于該節(jié)點上的 Pod 。 CNI 包含用于 ENI 和 IP 地址的預(yù)分配的控件,以便加快 Pod 的啟動時間,并且能夠支持多達(dá) 2000 個節(jié)點的大型集群。
此外,CNI 可以與 用于執(zhí)行網(wǎng)絡(luò)策略的 Calico 一起運行。 AWS VPC CNI 項目是開源的,請查看 GitHub 上的文檔。
Kubernetes 的 Azure CNI
Azure CNI 是一個開源插件, 將 Kubernetes Pods 和 Azure 虛擬網(wǎng)絡(luò)(也稱為 VNet)集成在一起,可提供與 VM 相當(dāng)?shù)木W(wǎng)絡(luò)性能。 Pod 可以通過 Express Route 或者 站點到站點的 VPN 來連接到對等的 VNet , 也可以從這些網(wǎng)絡(luò)來直接訪問 Pod。Pod 可以訪問受服務(wù)端點或者受保護(hù)鏈接的 Azure 服務(wù),比如存儲和 SQL。 你可以使用 VNet 安全策略和路由來篩選 Pod 流量。 該插件通過利用在 Kubernetes 節(jié)點的網(wǎng)絡(luò)接口上預(yù)分配的輔助 IP 池將 VNet 分配給 Pod 。
Azure CNI 可以在 Azure Kubernetes Service (AKS) 中獲得。
Calico
Calico 是一個開源的聯(lián)網(wǎng)及網(wǎng)絡(luò)安全方案, 用于基于容器、虛擬機(jī)和本地主機(jī)的工作負(fù)載。 Calico 支持多個數(shù)據(jù)面,包括:純 Linux eBPF 的數(shù)據(jù)面、標(biāo)準(zhǔn)的 Linux 聯(lián)網(wǎng)數(shù)據(jù)面 以及 Windows HNS 數(shù)據(jù)面。Calico 在提供完整的聯(lián)網(wǎng)堆棧的同時,還可與 云驅(qū)動 CNIs 聯(lián)合使用,以保證網(wǎng)絡(luò)策略實施。
Cilium
Cilium 是一個開源軟件,用于提供并透明保護(hù)應(yīng)用容器間的網(wǎng)絡(luò)連接。 Cilium 支持 L7/HTTP,可以在 L3-L7 上通過使用與網(wǎng)絡(luò)分離的基于身份的安全模型尋址來實施網(wǎng)絡(luò)策略, 并且可以與其他 CNI 插件結(jié)合使用。
華為的 CNI-Genie
CNI-Genie 是一個 CNI 插件, 可以讓 Kubernetes 在運行時使用不同的網(wǎng)絡(luò)模型的 實現(xiàn)同時被訪問。 這包括以 CNI 插件運行的任何實現(xiàn),比如 Flannel、 Calico、 Weave-net。
CNI-Genie 還支持將多個 IP 地址分配給 Pod, 每個都來自不同的 CNI 插件。
cni-ipvlan-vpc-K8S
cni-ipvlan-vpc-k8s 包含了一組 CNI 和 IPAM 插件來提供一個簡單的、本地主機(jī)、低延遲、高吞吐量 以及通過使用 Amazon 彈性網(wǎng)絡(luò)接口(ENI)并使用 Linux 內(nèi)核的 IPv2 驅(qū)動程序 以 L2 模式將 AWS 管理的 IP 綁定到 Pod 中, 在 Amazon Virtual Private Cloud(VPC)環(huán)境中為 Kubernetes 兼容的網(wǎng)絡(luò)堆棧。
這些插件旨在直接在 VPC 中進(jìn)行配置和部署,Kubelets 先啟動, 然后根據(jù)需要進(jìn)行自我配置和擴(kuò)展它們的 IP 使用率,而無需經(jīng)常建議復(fù)雜的管理 覆蓋網(wǎng)絡(luò)、BGP、禁用源/目標(biāo)檢查或調(diào)整 VPC 路由表以向每個主機(jī)提供每個實例子網(wǎng)的 復(fù)雜性(每個 VPC 限制為50-100個條目)。 簡而言之,cni-ipvlan-vpc-k8s 大大降低了在 AWS 中大規(guī)模部署 Kubernetes 所需的網(wǎng)絡(luò)復(fù)雜性。
Coil
Coil 是一個為易于集成、提供靈活的出站流量網(wǎng)絡(luò)而設(shè)計的 CNI 插件。 與裸機(jī)相比,Coil 的額外操作開銷低,并允許針對外部網(wǎng)絡(luò)的出站流量任意定義 NAT 網(wǎng)關(guān)。
Contiv-VPP
Contiv-VPP 是用于 Kubernetes 的用戶空間、面向性能的網(wǎng)絡(luò)插件,使用 fd.io 數(shù)據(jù)平面。
Contrail/Tungsten Fabric
Contrail 是基于 Tungsten Fabric 的,真正開放的多云網(wǎng)絡(luò)虛擬化和策略管理平臺。 Contrail 和 Tungsten Fabric 與各種編排系統(tǒng)集成在一起,例如 Kubernetes、OpenShift、OpenStack 和 Mesos, 并為虛擬機(jī)、容器或 Pods 以及裸機(jī)工作負(fù)載提供了不同的隔離模式。
DANM
DANM 是一個針對在 Kubernetes 集群中運行的電信工作負(fù)載的網(wǎng)絡(luò)解決方案。 它由以下幾個組件構(gòu)成:
- 能夠配置具有高級功能的 IPVLAN 接口的 CNI 插件
- 一個內(nèi)置的 IPAM 模塊,能夠管理多個、集群內(nèi)的、不連續(xù)的 L3 網(wǎng)絡(luò),并按請求提供動態(tài)、靜態(tài)或無 IP 分配方案
- CNI 元插件能夠通過自己的 CNI 或通過將任務(wù)授權(quán)給其他任何流行的 CNI 解決方案(例如 SRI-OV 或 Flannel)來實現(xiàn)將多個網(wǎng)絡(luò)接口連接到容器
- Kubernetes 控制器能夠集中管理所有 Kubernetes 主機(jī)的 VxLAN 和 VLAN 接口
- 另一個 Kubernetes 控制器擴(kuò)展了 Kubernetes 的基于服務(wù)的服務(wù)發(fā)現(xiàn)概念,以在 Pod 的所有網(wǎng)絡(luò)接口上工作
通過這個工具集,DANM 可以提供多個分離的網(wǎng)絡(luò)接口,可以為 Pod 使用不同的網(wǎng)絡(luò)后端和高級 IPAM 功能。
Flannel
Flannel 是一個非常簡單的能夠滿足 Kubernetes 所需要的覆蓋網(wǎng)絡(luò)。已經(jīng)有許多人報告了使用 Flannel 和 Kubernetes 的成功案例。
Hybridnet
Hybridnet 是一個為混合云設(shè)計的開源 CNI 插件, 它為一個或多個集群中的容器提供覆蓋和底層網(wǎng)絡(luò)。 Overlay 和 underlay 容器可以在同一個節(jié)點上運行, 并具有集群范圍的雙向網(wǎng)絡(luò)連接。
Jaguar
Jaguar 是一個基于 OpenDaylight 的 Kubernetes 網(wǎng)絡(luò)開源解決方案。 Jaguar 使用 vxlan 提供覆蓋網(wǎng)絡(luò),而 Jaguar CNIPlugin 為每個 Pod 提供一個 IP 地址。
k-vswitch
k-vswitch 是一個基于 Open vSwitch 的簡易 Kubernetes 網(wǎng)絡(luò)插件。 它利用 Open vSwitch 中現(xiàn)有的功能來提供強(qiáng)大的網(wǎng)絡(luò)插件,該插件易于操作,高效且安全。
Knitter
Knitter 是一個支持 Kubernetes 中實現(xiàn)多個網(wǎng)絡(luò)系統(tǒng)的解決方案。 它提供了租戶管理和網(wǎng)絡(luò)管理的功能。除了多個網(wǎng)絡(luò)平面外,Knitter 還包括一組端到端的 NFV 容器網(wǎng)絡(luò)解決方案, 例如為應(yīng)用程序保留 IP 地址、IP 地址遷移等。
Kube-OVN
Kube-OVN 是一個基于 OVN 的用于企業(yè)的 Kubernetes 網(wǎng)絡(luò)架構(gòu)。 借助于 OVN/OVS ,它提供了一些高級覆蓋網(wǎng)絡(luò)功能,例如子網(wǎng)、QoS、靜態(tài) IP 分配、流量鏡像、網(wǎng)關(guān)、 基于 openflow 的網(wǎng)絡(luò)策略和服務(wù)代理。
Kube-router
Kube-router 是 Kubernetes 的專用網(wǎng)絡(luò)解決方案, 旨在提供高性能和易操作性。 Kube-router 提供了一個基于 Linux LVS/IPVS 的服務(wù)代理、一個基于 Linux 內(nèi)核轉(zhuǎn)發(fā)的無覆蓋 Pod-to-Pod 網(wǎng)絡(luò)解決方案和基于 iptables/ipset 的網(wǎng)絡(luò)策略執(zhí)行器。
L2 networks and linux bridging
如果你具有一個“啞”的L2網(wǎng)絡(luò),例如“裸機(jī)”環(huán)境中的簡單交換機(jī),則應(yīng)該能夠執(zhí)行與上述 GCE 設(shè)置類似的操作。 請注意,這些說明僅是非常簡單的嘗試過-似乎可行,但尚未經(jīng)過全面測試。 如果你使用此技術(shù)并完善了流程,請告訴我們。
根據(jù) Lars Kellogg-Stedman 的這份非常不錯的“Linux 網(wǎng)橋設(shè)備” 使用說明來進(jìn)行操作。
Multus (a Multi Network plugin)
Multus 是一個多 CNI 插件, 使用 Kubernetes 中基于 CRD 的網(wǎng)絡(luò)對象來支持實現(xiàn) Kubernetes 多網(wǎng)絡(luò)系統(tǒng)。
Multus 支持所有參考插件(比如: Flannel、 DHCP、 Macvlan ) 來實現(xiàn) CNI 規(guī)范和第三方插件(比如: Calico、 Weave、 Cilium、 Contiv)。 除此之外, Multus 還支持 SRIOV、 DPDK、 OVS-DPDK & VPP 的工作負(fù)載, 以及 Kubernetes 中基于云的本機(jī)應(yīng)用程序和基于 NFV 的應(yīng)用程序。
NSX-T
VMware NSX-T 是一個網(wǎng)絡(luò)虛擬化和安全平臺。 NSX-T 可以為多云及多系統(tǒng)管理程序環(huán)境提供網(wǎng)絡(luò)虛擬化,并專注于具有異構(gòu)端點和技術(shù)堆棧的新興應(yīng)用程序框架和體系結(jié)構(gòu)。 除了 vSphere 管理程序之外,這些環(huán)境還包括其他虛擬機(jī)管理程序,例如 KVM、容器和裸機(jī)。
NSX-T Container Plug-in (NCP) 提供了 NSX-T 與容器協(xié)調(diào)器(例如 Kubernetes)之間的結(jié)合, 以及 NSX-T 與基于容器的 CaaS/PaaS 平臺(例如 Pivotal Container Service(PKS)和 OpenShift)之間的集成。
OVN (開放式虛擬網(wǎng)絡(luò))
OVN 是一個由 Open vSwitch 社區(qū)開發(fā)的開源的網(wǎng)絡(luò)虛擬化解決方案。 它允許創(chuàng)建邏輯交換器、邏輯路由、狀態(tài) ACL、負(fù)載均衡等等來建立不同的虛擬網(wǎng)絡(luò)拓?fù)洹?nbsp;該項目有一個特定的Kubernetes插件和文檔 ovn-kubernetes。
Weaveworks 的 Weave Net
Weave Net 是 Kubernetes 及其 托管應(yīng)用程序的彈性且易于使用的網(wǎng)絡(luò)系統(tǒng)。 Weave Net 可以作為 CNI 插件 運行或者獨立運行。 在這兩種運行方式里,都不需要任何配置或額外的代碼即可運行,并且在兩種情況下, 網(wǎng)絡(luò)都為每個 Pod 提供一個 IP 地址 -- 這是 Kubernetes 的標(biāo)準(zhǔn)配置。
網(wǎng)站名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes集群網(wǎng)絡(luò)系統(tǒng)
分享路徑:http://fisionsoft.com.cn/article/cdddhpc.html


咨詢
建站咨詢
