自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes網(wǎng)絡(luò)插件詳解 - Calico篇 - 網(wǎng)絡(luò)基礎(chǔ)

云計算 云原生
Kubernetes是以Container容器技術(shù)為核心的調(diào)度引擎,將傳統(tǒng)云計算對應(yīng)的基礎(chǔ)資源,包含計算、存儲,網(wǎng)絡(luò)進行了徹底池化統(tǒng)一管理,同時將運行在技術(shù)架構(gòu)之上的應(yīng)用和服務(wù)也進行了抽象標準化,再通過調(diào)度快速實現(xiàn)應(yīng)用與資源的匹配,即以應(yīng)用為中心構(gòu)建云原生操作系統(tǒng)能力。

Container容器借助底層Linux操作系統(tǒng)的Namespace與Cgroup內(nèi)核技術(shù),實現(xiàn)在單一主機資源的輕量級虛擬化資源隔離,包含進程ID、主機名、用戶ID、文件名、網(wǎng)絡(luò)和進程間通信等。同時每個網(wǎng)絡(luò)空間Network Namesapce都有獨立的網(wǎng)絡(luò)棧,包括網(wǎng)絡(luò)接口(Network Interface)、回環(huán)設(shè)備(Lookback Device)、路由表(Routing Table)和iptables規(guī)則等,是容器網(wǎng)絡(luò)隔離與通信的基礎(chǔ)。

圖片   

 Kubernetes是以Container容器技術(shù)為核心的調(diào)度引擎,將傳統(tǒng)云計算對應(yīng)的基礎(chǔ)資源,包含計算、存儲,網(wǎng)絡(luò)進行了徹底池化統(tǒng)一管理,同時將運行在技術(shù)架構(gòu)之上的應(yīng)用和服務(wù)也進行了抽象標準化,再通過調(diào)度快速實現(xiàn)應(yīng)用與資源的匹配,即以應(yīng)用為中心構(gòu)建云原生操作系統(tǒng)能力。

在Kubernetes集群內(nèi),既要解決相同宿主機多個命名空間網(wǎng)絡(luò)棧共享底層硬件資源,同時還要解決集群內(nèi)部跨宿主機網(wǎng)絡(luò)通信的問題,面向應(yīng)用提供完成的網(wǎng)絡(luò)能力,所以容器網(wǎng)絡(luò)是Kubernetes最復(fù)雜部分,同時也是設(shè)計精華所在:對于相同宿主機共享底層硬件設(shè)備問題,通常是借助虛擬化技術(shù)來實現(xiàn),通過虛擬設(shè)備來實現(xiàn)靈活的管理,再將虛擬化設(shè)備連接到真實的物理設(shè)備上實現(xiàn)網(wǎng)絡(luò)通信;對于跨宿主機網(wǎng)絡(luò)通信問題,采用SDN軟件定義網(wǎng)絡(luò)的思路,靈活使用底層網(wǎng)絡(luò)通信協(xié)議,同時結(jié)合各種虛擬化隧道通信技術(shù),實現(xiàn)容器集群內(nèi)外部通信。

所以要搞清楚復(fù)雜的容器網(wǎng)絡(luò)及各種各樣的網(wǎng)絡(luò)插件,首先需要了解網(wǎng)絡(luò)通信基礎(chǔ),網(wǎng)絡(luò)設(shè)備虛擬化以及網(wǎng)絡(luò)隧道技術(shù)。網(wǎng)絡(luò)通信基礎(chǔ)?。

一、網(wǎng)絡(luò)模

 OSI網(wǎng)絡(luò)模型將網(wǎng)絡(luò)數(shù)據(jù)發(fā)送和接收數(shù)據(jù)的過程分為7層,分別是物理層(Physical Layer),數(shù)據(jù)鏈路層(Data Link Layer),網(wǎng)絡(luò)層(Network Layer),傳輸層(Transport Layer),會話層(Session Layer),表示層(Presentation Layer),應(yīng)用層(Application Layer)。TCP/IP協(xié)議定義了一個應(yīng)用于不同網(wǎng)絡(luò)間信息傳輸?shù)膮f(xié)議簇,對網(wǎng)絡(luò)中各層次的通信制定了標準和方法。TCP/IP包含了很多協(xié)議,常見的協(xié)議包括IP、FTP、TCP、UDP、SMTP等。TCP/IP協(xié)議定義4層或者5層,4層主要包含鏈路層,網(wǎng)絡(luò)層,傳輸層,應(yīng)用層。OSI是開放系統(tǒng)的互連模型,相關(guān)的協(xié)議已經(jīng)非常少使用,但是模型本身非常通用;只是由于OSI模型過于理想化,至今尚未有完整的實現(xiàn)。TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)體系實際上是由OSI七層模型演化而來,是一個工業(yè)標準,并不是只由TCP和IP協(xié)議組成,而是由支持能夠在多個不同的網(wǎng)絡(luò)間實現(xiàn)信息傳輸?shù)膮f(xié)議簇,后續(xù)的網(wǎng)絡(luò)通信主要是基于TCP/IP協(xié)議講解。

圖片

二、網(wǎng)絡(luò)數(shù)據(jù)包

 在TCP/IP通信中,網(wǎng)絡(luò)層的作用是實現(xiàn)終端的點對點通信。通過IP地址將數(shù)據(jù)包發(fā)送給目的主機,在發(fā)送數(shù)據(jù)時,網(wǎng)絡(luò)堆棧的每一層都會添加自己的報文頭,包含該層需要的控制/元數(shù)據(jù),以便在數(shù)據(jù)包穿過網(wǎng)絡(luò)時對其進行處理,并將生成的數(shù)據(jù)包傳遞到堆棧的下一層。這樣就產(chǎn)生了完整的數(shù)據(jù)包。

圖片

三、IP路由

當網(wǎng)絡(luò)設(shè)備收到一個數(shù)據(jù)包時,它根據(jù)數(shù)據(jù)包的目的IP地址查詢路由表,如果有匹配的路由條目,就根據(jù)查詢結(jié)果將數(shù)據(jù)包轉(zhuǎn)發(fā)出去,如果沒有任何匹配的路由條目,則將數(shù)據(jù)包丟棄,這個過程就是IP路由。除了路由器,三層交換機、防火墻、負載均衡設(shè)備甚至主機等設(shè)備都可以進行路由操作。每一個路由條目包含目的網(wǎng)段地址/子網(wǎng)掩碼、路由協(xié)議、出接口、下一跳IP地址、路由優(yōu)先級和度量值等信息。路由表直連路由、靜態(tài)路由和動態(tài)路由三種方式獲取,其中動態(tài)路由是通過動態(tài)路由協(xié)議從相鄰網(wǎng)絡(luò)設(shè)備動態(tài)學(xué)習(xí)到的路由條目。協(xié)議有OSPF,BGP ,RIP,RIPv2等。

圖片

 其中BGP協(xié)議,即邊界網(wǎng)關(guān)協(xié)議,是一種運行于TCP上的一種能夠處理因特網(wǎng)大小的網(wǎng)絡(luò)協(xié)議,也是一種可以完善無關(guān)路由域間的多路連接協(xié)議。BGP主要用于與其他BGP線路建立網(wǎng)絡(luò)連接、相互交換包括AS在內(nèi)的信息。Kubernetes容器網(wǎng)絡(luò)插件Calico,就基于此協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)。

圖片

四、NAT(Network Address Translation)

網(wǎng)絡(luò)地址轉(zhuǎn)換是一種地址轉(zhuǎn)換技術(shù),可以將IP數(shù)據(jù)報文頭中的IP地址轉(zhuǎn)換為另一個IP地址,并通過轉(zhuǎn)換端口號達到地址重用的目的。

網(wǎng)絡(luò)設(shè)備虛擬化

在沒有虛擬化技術(shù)之前,計算機網(wǎng)絡(luò)系統(tǒng)都只通過物理網(wǎng)卡,線纜介質(zhì),連接外部網(wǎng)絡(luò),構(gòu)成龐大的網(wǎng)絡(luò)。隨著虛擬化技術(shù)的出現(xiàn),網(wǎng)絡(luò)也隨之被虛擬化,相較于單一的物理網(wǎng)絡(luò),虛擬網(wǎng)絡(luò)變得非常復(fù)雜。Linux虛擬網(wǎng)絡(luò)的底層都是由一個個的虛擬設(shè)備構(gòu)成的,以此來實現(xiàn)諸如交換、路由、隧道、隔離、聚合等多種網(wǎng)絡(luò)功能。常見的虛擬網(wǎng)絡(luò)設(shè)備有tap/tun、veth-pair和bridge。

圖片

1、Tap/Tun

Tap/Tun是Linux內(nèi)核實現(xiàn)的一對虛擬網(wǎng)絡(luò)設(shè)備,TAP工作在二層,TUN工作在三層。Linux內(nèi)核通過TAP/TUN設(shè)備向綁定該設(shè)備的用戶空間程序發(fā)送數(shù)據(jù),反之用戶空間程序也可以像操作物理網(wǎng)絡(luò)設(shè)備那樣向 TAP/TUN 設(shè)備發(fā)送數(shù)據(jù)。

2、Veth-pair

Veth-pair是一端連著內(nèi)核協(xié)議棧,另一端連著另一個設(shè)備,一個設(shè)備收到內(nèi)核發(fā)送的數(shù)據(jù)后,會發(fā)送到另一個設(shè)備上去,這種設(shè)備通常用于容器中兩個namespace之間的通信。

3、Bridge

Bridge是Linux內(nèi)核實現(xiàn)的一個工作在二層的虛擬網(wǎng)絡(luò)設(shè)備,但不同于TAP/TUN這種單端口的設(shè)備,Bridge實現(xiàn)為多端口,本質(zhì)上是一個虛擬交換機,具備和物理交換機類似的功能。Bridge可以綁定其他Linux網(wǎng)絡(luò)設(shè)備作為從設(shè)備,并將這些從設(shè)備虛擬化為端口,當一個從設(shè)備被綁定到Bridge上時,就相當于真實網(wǎng)絡(luò)中的交換機端口上插入了一根連有終端的網(wǎng)線。

網(wǎng)絡(luò)隧道技術(shù)

隧道(Tunneling)是一種網(wǎng)絡(luò)數(shù)據(jù)通信技術(shù),主要解決網(wǎng)絡(luò)協(xié)議不支持,數(shù)據(jù)傳輸不安全等網(wǎng)絡(luò)通信問題。將不支持的協(xié)議數(shù)據(jù)包打包成支持的協(xié)議數(shù)據(jù)包之后進行傳輸,或在不安全網(wǎng)絡(luò)上提供一個安全路徑。通過網(wǎng)絡(luò)隧道技術(shù),可以使隧道兩端的網(wǎng)絡(luò)組成一個更大的內(nèi)部網(wǎng)絡(luò)。

隧道協(xié)議有二層隧道協(xié)議與三層隧道協(xié)議兩類,二層隧道協(xié)議對應(yīng)OSI模型中數(shù)據(jù)鏈路層,使用幀作為數(shù)據(jù)交換單位,將數(shù)據(jù)封裝在點對點協(xié)議的幀中通過互聯(lián)網(wǎng)絡(luò)發(fā)送,協(xié)議包含PPTP、L2TP、L2F等。三層隧道協(xié)議對應(yīng)OSI模型中網(wǎng)絡(luò)層,使用包作為數(shù)據(jù)交換單位,將數(shù)據(jù)包封裝在附加的IP包頭中通過IP網(wǎng)絡(luò)傳送,協(xié)議包含GRE、IPSec、GRE等。Linux原生支持多種三層隧道,其底層實現(xiàn)原理都是基于tun設(shè)備:

  • IPIP:普通的IPIP隧道,就是在報文的基礎(chǔ)上再封裝成一個IPv4報文
  • GRE:通用路由封裝(Generic Routing Encapsulation),定義了在任意網(wǎng)絡(luò)層協(xié)議上封裝其他網(wǎng)絡(luò)層協(xié)議的機制,所以對于IPv4和IPv6都適用
  • SIT:主要用于IPv4報文封裝IPv6報文,即IPv6 over IPv4
  • ISATAP:站內(nèi)自動隧道尋址協(xié)議,類似于sit也是用于IPv6的隧道封裝
  • VTI:即虛擬隧道接口(Virtual Tunnel Interface),是一種IPsec隧道技術(shù)。

1、VXLAN隧道技術(shù)

Linux內(nèi)核自3.7版本開始支持VXLAN隧道技術(shù),是目前最流行的Overlay網(wǎng)絡(luò)隧道協(xié)議之一,將二層以太網(wǎng)幀封裝在四層UDP報文中,通過三層網(wǎng)絡(luò)傳輸,組成一個虛擬大二層網(wǎng)絡(luò)。VXLAN使用VTEP(VXLAN Tunnel Endpoint)來進行封包和解包:在發(fā)送端,源VTEP將原始報文封裝成VXLAN報文,通過UDP發(fā)送到對端VTEP;在接收端,VTEP將解開VXLAN報文,將原始的二層數(shù)據(jù)幀轉(zhuǎn)發(fā)給目的的接收方。VTEP可以是獨立的網(wǎng)絡(luò)設(shè)備,例如交換機,也可以是部署在服務(wù)器上的虛擬設(shè)備。例如使用置頂交換機(TOR)作為VTEP時,VXLAN的網(wǎng)絡(luò)模型如下圖:

圖片

  • VTEP(VXLAN tunnel endpoints):VXLAN網(wǎng)絡(luò)的邊緣設(shè)備,用來進行VXLAN報文的封包與解包。VTEP可以是網(wǎng)絡(luò)設(shè)備(例如交換機),也可以是一臺機器(例如虛擬化集群中的宿主機)。
  • VNI(VXLAN network identifier):VNI是VXLAN的標識,是個24位整數(shù),因此最大值是2的24次方個。如果一個VNI對應(yīng)一個租戶,那么理論上VXLAN可以支持千萬級別的租戶。
  • VXLAN Tunnel:隧道是一個邏輯上的概念,在VXLAN模型中并沒有具體的物理實體相對應(yīng)。隧道可以看作一個虛擬通道,VXLAN通信雙方都認為自己在直接通信,并不知道底層網(wǎng)絡(luò)的存在。從整體上看,每個VXLAN網(wǎng)絡(luò)像是為通信的設(shè)備搭建了一個單獨的通信通道,也就是隧道。

VXLAN的報文就是MAC in UDP,即在三層網(wǎng)絡(luò)的基礎(chǔ)上構(gòu)建一個虛擬的二層網(wǎng)絡(luò)。VXLAN的封包格式顯示原來的二層以太網(wǎng)幀(包含MAC頭部、IP頭部和傳輸層頭部的報文),被放在VXLAN包頭里進行封裝,再套到標準的UDP頭部(UDP頭部、IP頭部和MAC頭部),用來在底層網(wǎng)絡(luò)上傳輸報文。VXLAN報文比原始報文多出50個字節(jié),這降低了網(wǎng)絡(luò)鏈路傳輸?shù)挠行?shù)據(jù)比例,尤其是小包。UDP目的端口是接收方VTEP設(shè)備使用的端口,IANA分配了4789作為VXLAN的目的UDP端口(flannel VXLAN模式是8472)。

圖片

總結(jié)

總的來說,云原生Kubernetes并且沒有創(chuàng)造新的網(wǎng)絡(luò)技術(shù),而是根據(jù)各種場景靈活的聚合使用各種網(wǎng)絡(luò)技術(shù)。從底層通信技術(shù)來看,容器網(wǎng)絡(luò)有Overlay模式,路由模式,以及Underlay模式三種,其中Overlay模式主要是通過虛擬化與隧道技術(shù),屏蔽底層網(wǎng)絡(luò)復(fù)雜路由轉(zhuǎn)發(fā),面向應(yīng)用提供簡單高效的通信能力。同時底層操作系統(tǒng)內(nèi)核的網(wǎng)絡(luò)的技術(shù)也在發(fā)展演進,各種虛擬化技術(shù)及隧道技術(shù)極其相似,又各自有細微的差別,所以才有多種容器網(wǎng)絡(luò)插件及網(wǎng)絡(luò)模式,所以容器網(wǎng)絡(luò)規(guī)劃選擇一定要針對業(yè)務(wù)應(yīng)用的場景,在靈活,高效,以及成本等多因素中權(quán)衡選擇合適的網(wǎng)絡(luò)方案。

本文轉(zhuǎn)載自微信公眾號「巨子嘉」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系巨子嘉公眾號。

責(zé)任編輯:姜華 來源: 巨子嘉
相關(guān)推薦

2022-07-27 16:23:36

Kubernetes容器

2022-05-31 10:30:23

KubernetesCalico運維

2019-07-03 10:58:22

Kubernetes網(wǎng)絡(luò)插件

2021-11-22 08:50:20

Kubernetes網(wǎng)絡(luò)策略云原生應(yīng)用程序

2022-05-02 18:45:33

Kubernetes網(wǎng)絡(luò)模型

2011-03-29 11:28:00

Cacti插件

2023-11-28 07:55:05

Calico容器網(wǎng)絡(luò)

2019-10-24 11:10:06

Kubernetes網(wǎng)絡(luò)運維

2021-12-01 06:30:05

EnspCalicok8s集群

2020-05-14 16:35:21

Kubernetes網(wǎng)絡(luò)策略DNS

2019-10-24 10:25:32

Kubernetes網(wǎng)絡(luò)集群

2024-01-19 18:02:25

Kubernetes網(wǎng)絡(luò)流量

2010-07-27 10:15:38

NFS網(wǎng)絡(luò)文件系統(tǒng)

2013-10-30 11:27:25

Linux基礎(chǔ)網(wǎng)絡(luò)設(shè)備

2020-07-08 09:36:03

Kubernetes容器開發(fā)

2020-04-12 22:23:45

Kubernetes容器網(wǎng)絡(luò)

2021-04-14 09:33:58

Kubernetes通信網(wǎng)絡(luò)模型

2020-09-23 14:20:07

Kubernetes容器網(wǎng)絡(luò)模型

2010-03-19 09:24:14

無線網(wǎng)絡(luò)

2017-08-23 11:10:44

Kubernetes 調(diào)度詳解
點贊
收藏

51CTO技術(shù)棧公眾號