成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

docker筆記31_1-容器之間通訊方式及Flannel工作原理-創(chuàng)新互聯(lián)

轉(zhuǎn)自: https://blog.csdn.net/weixin_29115985/article/details/78963125

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、玉林網(wǎng)絡(luò)推廣、成都小程序開發(fā)、玉林網(wǎng)絡(luò)營銷、玉林企業(yè)策劃、玉林品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供玉林建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:jinyejixie.com

一. 容器之間通訊方式

k8s里面容器是存在于pod里面的,所以容器之間通訊,一般分為三種類型:
(1) pod 訪問service服務(wù)
(2) pod內(nèi)部容器之間
(3) pod 與 pod 容器之間

1. pod 訪問service服務(wù)

此方式在上篇文章介紹過,其通過暴露主機IP和端口的形式進行通訊,此篇不再介紹了。

2. pod內(nèi)部容器之間

這種情況下容器通訊比較簡單,因為pod內(nèi)部的容器是共享網(wǎng)絡(luò)空間的,所以容器直接可以使用localhost訪問其他容器。
k8s在啟動容器的時候會先啟動一個 Pause容器 ,這個容器就是實現(xiàn)這個功能的:
每個Pod里運行著一個特殊的被稱之為Pause的容器,其他容器則為業(yè)務(wù)容器,這些業(yè)務(wù)容器共享Pause容器的網(wǎng)絡(luò)棧和Volume掛載卷,因此他們之間通信和數(shù)據(jù)交換更為高效,在設(shè)計時我們可以充分利用這一特性將一組密切相關(guān)的服務(wù)進程放入同一個Pod中。

3. pod 與 pod 容器之間

此種類型又分為兩種情況:
(1) 兩個pod在一臺節(jié)點上 :此時是利用docker默認的自身網(wǎng)橋方式互連容器的。
(2) 兩個pod在不同節(jié)點上 :這種情況k8s官方推薦的是使用flannel組建一個大二層扁平網(wǎng)絡(luò),pod的ip分配由flannel統(tǒng)一分配,通訊過程也是走flannel的網(wǎng)橋方式。(flannel 的集群配置方法已在Kubernetes學(xué)習(xí)2--集群部署與搭建介紹過)
接下來就詳細介紹下 flannel 工作原理吧。

二. Flannel工作原理

Flannel是CoreOS團隊針對Kubernetes設(shè)計的一個網(wǎng)絡(luò)規(guī)劃服務(wù),簡單來說,它的功能是讓集群中的不同節(jié)點主機創(chuàng)建的Docker容器都具有全集群唯一的虛擬IP地址。

Flannel實質(zhì)上是一種“ 覆蓋網(wǎng)絡(luò)(overlay network) ”,也就是將TCP數(shù)據(jù)包裝在另一種網(wǎng)絡(luò)包里面進行路由轉(zhuǎn)發(fā)和通信,F(xiàn)lannel的設(shè)計目的就是為集群中的所有節(jié)點重新規(guī)劃IP地址的使用規(guī)則,從而使得不同節(jié)點上的容器能夠獲得“同屬一個內(nèi)網(wǎng)”且”不重復(fù)的”IP地址,并讓屬于不同節(jié)點上的容器能夠直接通過內(nèi)網(wǎng)IP通信。 

默認的節(jié)點間數(shù)據(jù)通信方式是UDP轉(zhuǎn)發(fā),在Flannel的GitHub頁面有如下的一張原理圖:

docker筆記31_1-容器之間通訊方式及Flannel工作原理

簡單的說flannel做了三件事情:


1. 數(shù)據(jù)從源容器中發(fā)出后,經(jīng)由所在主機的docker0虛擬網(wǎng)卡轉(zhuǎn)發(fā)到flannel0虛擬網(wǎng)卡,這是個P2P的虛擬網(wǎng)卡,flanneld服務(wù)監(jiān)聽在網(wǎng)卡的另外一端。 Flannel也是通過修改Node的路由表實現(xiàn)這個效果的。


2. 源主機的flanneld服務(wù)將原本的數(shù)據(jù)內(nèi)容UDP封裝后根據(jù)自己的路由表投遞給目的節(jié)點的flanneld服務(wù),數(shù)據(jù)到達以后被解包,然后直接進入目的節(jié)點的flannel0虛擬網(wǎng)卡,然后被轉(zhuǎn)發(fā)到目的主機的docker0虛擬網(wǎng)卡,最后就像本機容器通信一樣由docker0路由到達目標容器。 


3. 使每個結(jié)點上的容器分配的地址不沖突。Flannel通過Etcd分配了每個節(jié)點可用的IP地址段后,再修改Docker的啟動參數(shù)。“--bip=X.X.X.X/X”這個參數(shù),它限制了所在節(jié)點容器獲得的IP范圍。

結(jié)合部署集群的情況

Flannel啟動之后會創(chuàng)建一個文件 subnet.env
vim /run/flannel/subnet.env

docker筆記31_1-容器之間通訊方式及Flannel工作原理

因此,以此次集群部署為例,通俗解析下不同節(jié)點上pod容器通訊過程:( 假設(shè)容器1是 nginx ,容器2是 tomcat

docker筆記31_1-容器之間通訊方式及Flannel工作原理

1. 在發(fā)送端節(jié)點node1上,數(shù)據(jù)請求從 nginx 容器(10.0.46.2:2379) 中發(fā)出后,首先經(jīng)由所在主機的 docker0虛擬網(wǎng)卡(10.0.46.1) 轉(zhuǎn)發(fā)到 flannel0虛擬網(wǎng)卡(10.0.46.0) 。

2. 接著 flannel 服務(wù)將原本的數(shù)據(jù)內(nèi)容UDP封裝后根據(jù)自己的路由表投遞給目的節(jié)點的flanneld服務(wù)。在此包中,包含有 outer-ip(source:192.168.8.227  dest:192.168.8.228) ,還有 inner-ip(source:10.0.46.2:2379  dest:10.0.90.2:8080) 等數(shù)據(jù)信息。

3. 然后在接收端節(jié)點node2上,數(shù)據(jù)到達以后被解包,直接進入目的節(jié)點的 flannel0虛擬網(wǎng)卡中(10.0.90.0) ,且被轉(zhuǎn)發(fā)到目的主機的 docker0虛擬網(wǎng)卡(10.0.90.1) ,最后就像本機容器通信一樣由docker0路由到達目標 tomcat 容器(10.0.90.2:8080) 。

--------------------- 本文來自 JamlyHuang 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/weixin_29115985/article/details/78963125?utm_source=copy 

網(wǎng)頁題目:docker筆記31_1-容器之間通訊方式及Flannel工作原理-創(chuàng)新互聯(lián)
本文來源:http://jinyejixie.com/article24/dejpce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、定制網(wǎng)站、企業(yè)建站、品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、小程序開發(fā)

廣告

聲明:本網(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)

搜索引擎優(yōu)化
华阴市| 锡林郭勒盟| 江达县| 军事| 泗洪县| 郑州市| 英德市| 小金县| 西林县| 安仁县| 万安县| 柏乡县| 原平市| 恭城| 锡林郭勒盟| 中超| 永丰县| 广河县| 岑溪市| 秦皇岛市| 永仁县| 漳平市| 谢通门县| 牙克石市| 祁东县| 安新县| 汾西县| 赣榆县| 万年县| 巫溪县| 江北区| 敦煌市| 贵阳市| 巴南区| 蒙阴县| 沅江市| 得荣县| 社旗县| 建平县| 额敏县| 宾阳县|