掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
集群網(wǎng)絡(luò)系統(tǒng)是 Kubernetes 的核心部分,但是想要準(zhǔn)確了解它的工作原理可是個(gè)不小的挑戰(zhàn)。 下面列出的是網(wǎng)絡(luò)系統(tǒng)的的四個(gè)主要問(wèn)題:

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

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流