欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

【Kubernetes系列】第11篇網(wǎng)絡原理解析(下篇)

3. 覆蓋網(wǎng)絡 - Overlay Network

覆蓋網(wǎng)絡(overlay network)是將TCP數(shù)據(jù)包裝在另一種網(wǎng)絡包里面進行路由轉(zhuǎn)發(fā)和通信的技術。Overlay網(wǎng)絡不是默認必須的,但是它們在特定場景下非常有用。比如當我們沒有足夠的IP空間,或者網(wǎng)絡無法處理額外路由,抑或當我們需要Overlay提供的某些額外管理特性。一個常見的場景是當云提供商的路由表能處理的路由數(shù)是有限制時,例如AWS路由表最多支持50條路由才不至于影響網(wǎng)絡性能。因此如果我們有超過50個Kubernetes節(jié)點,AWS路由表將不夠。這種情況下,使用Overlay網(wǎng)絡將幫到我們。

創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為巍山企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設計、成都外貿(mào)網(wǎng)站建設巍山網(wǎng)站改版等技術服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

本質(zhì)上來說,Overlay就是在跨節(jié)點的本地網(wǎng)絡上的包中再封裝一層包。你可能不想使用Overlay網(wǎng)絡,因為它會帶來由封裝和解封所有報文引起的時延和復雜度開銷。通常這是不必要的,因此我們應當在知道為什么我們需要它時才使用它。

為了理解Overlay網(wǎng)絡中流量的流向,我們拿Flannel做例子,它是CoreOS 的一個開源項目。Flannel通過給每臺宿主機分配一個子網(wǎng)的方式為容器提供虛擬網(wǎng)絡,它基于Linux TUN/TAP,使用UDP封裝IP包來創(chuàng)建overlay網(wǎng)絡,并借助etcd維護網(wǎng)絡的分配情況。

【Kubernetes系列】第11篇 網(wǎng)絡原理解析(下篇)cdn.xitu.io/2019/11/19/16e8316586e8fdd4?w=2000&h=929&f=gif&s=1472688">

Kubernetes Node with route table?
(通過Flannel Overlay網(wǎng)絡進行跨節(jié)點的Pod-to-Pod通信)

這里我們注意到它和之前我們看到的設施是一樣的,只是在root netns中新增了一個虛擬的以太網(wǎng)設備,稱為flannel0。它是虛擬擴展網(wǎng)絡Virtual Extensible LAN(VXLAN)的一種實現(xiàn),但是在Linux上,它只是另一個網(wǎng)絡接口。

從pod1到pod4(在不同節(jié)點)的數(shù)據(jù)包的流向類似如下:

1.它由pod1中netns的eth0網(wǎng)口離開,通過vethxxx進入root netns。

2.然后被傳到cbr0,cbr0通過發(fā)送ARP請求來找到目標地址。

3.數(shù)據(jù)封裝

*a. 由于本節(jié)點上沒有Pod擁有pod4的IP地址,因此網(wǎng)橋把數(shù)據(jù)包發(fā)送給了flannel0,因為節(jié)點的路由表上flannel0被配成了Pod網(wǎng)段的目標地址。

*b. flanneld daemon和Kubernetes apiserver或者底層的etcd通信,它知道所有的Pod IP,并且知道它們在哪個節(jié)點上。因此Flannel創(chuàng)建了Pod IP和Node IP之間的映射(在用戶空間)。flannel0取到這個包,并在其上再用一個UDP包封裝起來,該UDP包頭部的源和目的IP分別被改成了對應節(jié)點的IP,然后發(fā)送這個新包到特定的VXLAN端口(通常是8472)。

【Kubernetes系列】第11篇 網(wǎng)絡原理解析(下篇)

Packet-in-packet encapsulation?
(notice the packet is encapsulated from 3c to 6b in previous diagram)

盡管這個映射發(fā)生在用戶空間,真實的封裝以及數(shù)據(jù)的流動發(fā)生在內(nèi)核空間,因此仍然是很快的

*c. 封裝后的包通過eth0發(fā)送出去,因為它涉及了節(jié)點間的路由流量。

4.包帶著節(jié)點IP信息作為源和目的地址離開本節(jié)點。

5.云提供商的路由表已經(jīng)知道了如何在節(jié)點間發(fā)送報文,因此該報文被發(fā)送到目標地址node2。

6.數(shù)據(jù)解包

*a. 包到達node2的eth0網(wǎng)卡,由于目標端口是特定的VXLAN端口,內(nèi)核將報文發(fā)送給了 flannel0。?

*b. flannel0解封報文,并將其發(fā)送到 root 命名空間下。從這里開始,報文的路徑和我們之前在Part 1 中看到的非Overlay網(wǎng)絡就是一致的了。?

*c. 由于IP forwarding開啟著,內(nèi)核按照路由表將報文轉(zhuǎn)發(fā)給了cbr0。

7.網(wǎng)橋獲取到了包,發(fā)送ARP請求,發(fā)現(xiàn)目標IP屬于vethyyy。

8.包跨過管道對到達pod4

這就是Kubernetes中Overlay網(wǎng)絡的工作方式,雖然不同的實現(xiàn)還是會有細微的差別。有個常見的誤區(qū)是,當我們使用Kubernetes,我們就不得不使用Overlay網(wǎng)絡。事實是,這完全依賴于特定場景。因此請確保在確實需要的場景下才使用。

4. 動態(tài)集群

由于Kubernetes(更通用的說法是分布式系統(tǒng))天生具有不斷變化的特性,因此它的Pod(以及Pod的IP)總是在改變。變化的原因可以是針對不可預測的Pod或節(jié)點崩潰而進行的滾動升級和擴展。這使得Pod IP不能直接用于通信。

我們看一下Kubernetes Service,它是一個虛擬IP,并伴隨著一組Pod IP作為Endpoint(通過標簽選擇器識別)。它們充當虛擬負載均衡器,其IP保持不變,而后端Pod IP可能會不斷變化。

【Kubernetes系列】第11篇 網(wǎng)絡原理解析(下篇)

Kubernetes service對象中的label選擇器

整個虛擬IP的實現(xiàn)實際上是一組iptables(最新版本可以選擇使用IPVS,但這是另一個討論)規(guī)則,由Kubernetes組件kube-proxy管理。 這個名字現(xiàn)在實際上是誤導性的。 它在v 1.0之前確實是一個代理,并且由于其實現(xiàn)是內(nèi)核空間和用戶空間之間的不斷復制,它變得非常耗費資源并且速度較慢。 現(xiàn)在,它只是一個控制器,就像Kubernetes中的許多其它控制器一樣,它watch api server的endpoint的更改并相應地更新iptables規(guī)則。

【Kubernetes系列】第11篇 網(wǎng)絡原理解析(下篇)

Iptables DNAT

有了這些iptables規(guī)則,每當數(shù)據(jù)包發(fā)往Service IP時,它就進行DNAT(DNAT=目標網(wǎng)絡地址轉(zhuǎn)換)操作,這意味著目標IP從Service IP更改為其中一個Endpoint - Pod IP - 由iptables隨機選擇。這可確保負載均勻分布在后端Pod中。

【Kubernetes系列】第11篇 網(wǎng)絡原理解析(下篇)

conntrack表中的5元組條目

當這個DNAT發(fā)生時,這個信息存儲在conntrack中——Linux連接跟蹤表(iptables規(guī)則5元組轉(zhuǎn)譯并完成存儲:protocol,srcIP,srcPort,dstIP,dstPort)。 這樣當請求回來時,它可以un-DNAT,這意味著將源IP從Pod IP更改為Service IP。 這樣,客戶端就不用關心后臺如何處理數(shù)據(jù)包流。

因此通過使用Kubernetes Service,我們可以使用相同的端口而不會發(fā)生任何沖突(因為我們可以將端口重新映射到Endpoint)。 這使服務發(fā)現(xiàn)變得非常容易。 我們可以使用內(nèi)部DNS并對服務主機名進行硬編碼。 我們甚至可以使用Kubernetes提供的service主機和端口的環(huán)境變量來完成服務發(fā)現(xiàn)。

專家建議:?采取第二種方法,你可節(jié)省不必要的DNS調(diào)用,但是由于環(huán)境變量存在創(chuàng)建順序的局限性(環(huán)境變量中不包含后來創(chuàng)建的服務),推薦使用DNS來進行服務名解析。

4.1 出站流量

到目前為止我們討論的Kubernetes Service是在一個集群內(nèi)工作。但是,在大多數(shù)實際情況中,應用程序需要訪問一些外部api/website。

通常,節(jié)點可以同時具有私有IP和公共IP。對于互聯(lián)網(wǎng)訪問,這些公共和私有IP存在某種1:1的NAT,特別是在云環(huán)境中。

對于從節(jié)點到某些外部IP的普通通信,源IP從節(jié)點的專用IP更改為其出站數(shù)據(jù)包的公共IP,入站的響應數(shù)據(jù)包則剛好相反。但是,當Pod發(fā)出與外部IP的連接時,源IP是Pod IP,云提供商的NAT機制不知道該IP。因此它將丟棄具有除節(jié)點IP之外的源IP的數(shù)據(jù)包。

因此你可能也猜對了,我們將使用更多的iptables!這些規(guī)則也由kube-proxy添加,執(zhí)行SNAT(源網(wǎng)絡地址轉(zhuǎn)換),即IP MASQUERADE(IP偽裝)。它告訴內(nèi)核使用此數(shù)據(jù)包發(fā)出的網(wǎng)絡接口的IP,代替源Pod IP同時保留conntrack條目以進行反SNAT操作。

4.2 入站流量

到目前為止一切都很好。Pod可以互相交談,也可以訪問互聯(lián)網(wǎng)。但我們?nèi)匀蝗鄙訇P鍵部分 - 為用戶請求流量提供服務。截至目前,有兩種主要方法可以做到這一點:

* NodePort /云負載均衡器(L4 - IP和端口)

將服務類型設置為NodePort默認會為服務分配范圍為30000-33000的nodePort。即使在特定節(jié)點上沒有運行Pod,此nodePort也會在每個節(jié)點上打開。此NodePort上的入站流量將再次使用iptables發(fā)送到其中一個Pod(該Pod甚至可能在其它節(jié)點上!)。

云環(huán)境中的LoadBalancer服務類型將在所有節(jié)點之前創(chuàng)建云負載均衡器(例如ELB),命中相同的nodePort。

* Ingress(L7 - HTTP / TCP)

許多不同的工具,如Nginx,Traefik,HAProxy等,保留了http主機名/路徑和各自后端的映射。通常這是基于負載均衡器和nodePort的流量入口點,其優(yōu)點是我們可以有一個入口處理所有服務的入站流量,而不需要多個nodePort和負載均衡器。

4.3 網(wǎng)絡策略

可以把它想象為Pod的安全組/ ACL。 NetworkPolicy規(guī)則允許/拒絕跨Pod的流量。確切的實現(xiàn)取決于網(wǎng)絡層/CNI,但大多數(shù)只使用iptables。

結(jié)束語

目前為止就這樣了。 在前面的部分中,我們研究了Kubernetes網(wǎng)絡的基礎以及overlay網(wǎng)絡的工作原理。 現(xiàn)在我們知道Service抽象是如何在一個動態(tài)集群內(nèi)起作用并使服務發(fā)現(xiàn)變得非常容易。我們還介紹了出站和入站流量的工作原理以及網(wǎng)絡策略如何對集群內(nèi)的安全性起作用。

參考文章

An illustrated guide to Kubernetes Networking - part1

An illustrated guide to Kubernetes Networking - part2

An illustrated guide to Kubernetes Networking - part3

【Kubernetes系列】第11篇 網(wǎng)絡原理解析(下篇)

分享題目:【Kubernetes系列】第11篇網(wǎng)絡原理解析(下篇)
路徑分享:http://chinadenli.net/article28/jggdjp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、面包屑導航網(wǎng)站建設、手機網(wǎng)站建設用戶體驗、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
欧美日韩国产亚洲三级理论片| 欧美一区二区日韩一区二区| 日本在线视频播放91| 亚洲性生活一区二区三区| 精品人妻一区二区三区在线看| 日韩中文字幕有码午夜美女| 麻豆欧美精品国产综合久久| 丝袜美女诱惑在线观看| 日韩精品成区中文字幕| 亚洲二区欧美一区二区| 欧美黑人在线精品极品| 欧美成人免费夜夜黄啪啪| 殴美女美女大码性淫生活在线播放| 丝袜人妻夜夜爽一区二区三区| 亚洲男人的天堂就去爱| 日本特黄特色大片免费观看| 少妇人妻精品一区二区三区 | 99国产精品国产精品九九| 熟女乱一区二区三区四区| 九九热精彩视频在线播放| 久久re6热在线视频| 婷婷色国产精品视频一区| 国产午夜福利在线观看精品| 超薄肉色丝袜脚一区二区| 欧美人妻少妇精品久久性色 | 日韩精品视频一二三区| 后入美臀少妇一区二区| 国产精品激情对白一区二区| 国产精品香蕉一级免费| 日韩一级欧美一级久久| 91插插插外国一区二区| 欧美黑人黄色一区二区| 欧美三级大黄片免费看| 亚洲淫片一区二区三区| 午夜免费精品视频在线看| 欧美91精品国产自产| 亚洲男人的天堂久久a| 午夜精品国产精品久久久| 国产日本欧美韩国在线| 日本东京热视频一区二区三区| 国产日本欧美韩国在线|