筆記-網(wǎng)絡(luò)篇

Docker網(wǎng)絡(luò):可以在docker run的時候指定

bridge:這是Docker默認的網(wǎng)絡(luò)驅(qū)動轧苫,此模式會為每一個容器分配Network Namespace和設(shè)置IP等呼胚,并將容器連接到一個虛擬網(wǎng)橋上。

如果未指定網(wǎng)絡(luò)驅(qū)動,這默認使用此驅(qū)動挖藏。

1瑞凑、安裝docker的時候默認會啟動一個docker0的虛擬網(wǎng)橋? docker network inspect bridge可以查看容器ip范圍以及網(wǎng)關(guān)

2、創(chuàng)建容器的時候宿主機會創(chuàng)建虛擬網(wǎng)卡 veth pair ,成對出現(xiàn)师幕,一端容器中eth0,另一端放在宿主機的dcoker0,以veth

為前 綴的名字命名 使用brctl show 查看

3、向外通訊的時候使用-p參數(shù)綁定主機的端口,采用NAT模式向外發(fā)送報文

NAT:網(wǎng)絡(luò)地址轉(zhuǎn)換懂诗,下一層封裝上一層的ip信息進行偽裝并且記錄ip供報文返回尋找源ip

容器使用虛擬網(wǎng)卡eth0--veth--->docker0(網(wǎng)橋)---->eth0(宿主機的)

host:此網(wǎng)絡(luò)驅(qū)動直接使用宿主機的網(wǎng)絡(luò)嵌戈。

none:此驅(qū)動不構(gòu)造網(wǎng)絡(luò)環(huán)境。采用了none 網(wǎng)絡(luò)驅(qū)動笔链,那么就只能使用loopback網(wǎng)絡(luò)設(shè)備,容器只能使用127.0.0.1的本機網(wǎng)絡(luò)

joined containers:使用某個已經(jīng)存在的容器的網(wǎng)絡(luò)命名空間

------------------------------------------------------------------------------------------------------------------------

overlay:此網(wǎng)絡(luò)驅(qū)動可以使多個Docker daemons連接在一起手素,并能夠使用swarm服務(wù)之間進行通訊。也可以使用overlay網(wǎng)絡(luò)進行

swarm服務(wù)和容器之間、容器之間進行通訊

macvlan:此網(wǎng)絡(luò)允許為容器指定一個MAC地址邓嘹,允許容器作為網(wǎng)絡(luò)中的物理設(shè)備钉嘹,這樣Docker daemon就可以通過MAC地址進行訪問的

路由缨睡。對于希望直接連接網(wǎng)絡(luò)網(wǎng)絡(luò)的遺留應(yīng)用,這種網(wǎng)絡(luò)驅(qū)動有時可能是最好的選擇震贵。

Network plugins:可以安裝和使用第三方的網(wǎng)絡(luò)插件。可以在Docker Store或第三方供應(yīng)商處獲取這些插件

------------------------------------------------------------------------------------------------------------------------

kubernets網(wǎng)絡(luò)模式

1、容器與容器之間的通信

每一個pod啟動都會創(chuàng)建一個pause容器绽淘,該容器負責為pod提供統(tǒng)一的網(wǎng)絡(luò)空間其他容器綁定該容器的網(wǎng)絡(luò)命名空間,容器間使用

通訊localhost

2、Pod和Pod之間的通信

需要網(wǎng)絡(luò)插件(cni)解決常用的有flannel(網(wǎng)絡(luò)分配)、calico(提供網(wǎng)絡(luò)策略)离钝、目前組合使用

flannel:(不支持容器間網(wǎng)絡(luò)策略鲤竹,默認用的vxlan傳輸機制)一個為k8s提供疊加網(wǎng)絡(luò)(overlay)的插件

采用L3 Overlay模式設(shè)計flannel碘橘, 規(guī)定宿主機下各個Pod屬于同一個子網(wǎng)氮墨,不同宿主機下的Pod屬于不同的子網(wǎng)

flannel會在每一個宿主機上運行名為flanneld代理桥氏,其負責為宿主機預(yù)先分配一個子網(wǎng)诚镰,并為Pod分配IP地址

使用Kubernetes或etcd來存儲網(wǎng)絡(luò)配置刃跛、分配的子網(wǎng)和主機公共IP等信息

數(shù)據(jù)包則通過VXLAN检号、UDP或host-gw這些類型的后端機制進行轉(zhuǎn)發(fā)

VxLAN:可擴展虛擬局域網(wǎng)桂塞,使用內(nèi)核中的vxlan模塊封裝報文,推薦使用方式

directrouting模式:vxlan使用隧道網(wǎng)絡(luò)轉(zhuǎn)發(fā)疊加網(wǎng)絡(luò)的報文勢必會造成不少的流量開銷,所以設(shè)計的該模式,僅

僅在主機跨二層網(wǎng)絡(luò)時才采取隧道方式轉(zhuǎn)發(fā)通訊,其余時候直接采用二層網(wǎng)絡(luò)轉(zhuǎn)發(fā)pod報文萤捆,

從而省去隧道首部開銷岁忘。

宿主機二層直達的時候會采取route模式其他使用vxlan,(集群規(guī)模不超過200臺)

iptables -nL 查看forword鏈

ip route show 查看路由規(guī)則

UDP:使用普通udp報文封裝完成隧道轉(zhuǎn)發(fā)戚篙,性能低岔擂。

host-gw:通過在節(jié)點上創(chuàng)建目標地址的路由來完成報文的轉(zhuǎn)發(fā)位喂,性能好,但需要主機在同一個二層網(wǎng)絡(luò)中乱灵,大型集群無

法滿足

flannel運行過程:

1)設(shè)置集群網(wǎng)絡(luò)

flannel默認使用etcd作為配置和協(xié)調(diào)中心塑崖,首先使用etcd設(shè)置集群的整體網(wǎng)絡(luò)。通過如下的命令能夠查詢網(wǎng)絡(luò)配置

信息:

etcdctl ls /coreos.com/network/config (安裝etcd工具)

2)設(shè)置Node節(jié)點上的子網(wǎng)

基于在etcd中設(shè)置的網(wǎng)絡(luò)痛倚,flannel為每一個Node分配IP子網(wǎng)弃舒。

獲取子網(wǎng)列表etcdctl ls /coreos.com/network/subnets

獲取子網(wǎng)信息etcdctl ls /coreos.com/network/subnets/{IP網(wǎng)段}

3)在每個Node上啟動flannelid

flannel在每個Node上啟動了一個flanneld的服務(wù),在flanneld啟動后状原,將從etcd中讀取配置信息聋呢,并請求獲取子網(wǎng)

的租約。所有Node上的flanneld都依賴etcd cluster來做集中配置服務(wù)颠区,etcd保證了所有node上flanned所看到的配

置是一致 的削锰。同時每個node上的flanned監(jiān)聽etcd上的數(shù)據(jù)變化,實時感知集群中node的變化毕莱。flanneld一旦獲取

子網(wǎng)租約器贩、配置后端后,會將一些信息寫入/run/flannel/subnet.env文件

cat /var/run/flannel/subnet.env

4)創(chuàng)建虛擬網(wǎng)卡

在Node節(jié)點上朋截,會創(chuàng)建一個名為flannel.1的虛擬網(wǎng)卡 ip addr show flannel.1

5)創(chuàng)建Docker網(wǎng)橋

并為容器配置名為docker0的網(wǎng)橋蛹稍,實際是通過修改Docker的啟動參數(shù)–bip來實現(xiàn)的。通過這種方式部服,為每個節(jié)點

的Docker0網(wǎng)橋設(shè)置在整個集群范圍內(nèi)唯一的網(wǎng)段唆姐,從保證創(chuàng)建出來的Pod的IP地址是唯一。

ip addr show docker0

6)修改路由表

flannel會對路由表進行修改廓八,從而能夠?qū)崿F(xiàn)容器跨主機的通信

數(shù)據(jù)傳遞過程:container源--->docker0網(wǎng)橋(本機)--->flannel.1虛擬網(wǎng)卡(本機)--->宿主機eth0網(wǎng)卡--->目標主機

eth0網(wǎng)卡--->flannel.1虛擬網(wǎng)卡(目標)--->docker0網(wǎng)橋(目標)--->container目標

ip route查看路由規(guī)則

calico:bgp協(xié)議方式 ipip(三層隧道)提供網(wǎng)絡(luò)策略

通過定義NetworkPolicy資源來進行

networkpolicy奉芦,定義時候ingress和egress 如果定義了生效又沒有定義規(guī)則則執(zhí)行默認(都拒絕)

拒絕所有出入站規(guī)則赵抢,放行本地namesapce的通信,其他的單獨定義声功。

3烦却、Pod和service之間的通信

通過iptables規(guī)則中得到serviceip代理的其中一個pod的ip進行通訊

------------------------------------------------------------------------------------------------------------------------

service

service:service為一組pod提供一個統(tǒng)一的代理服務(wù)ip解決了podip經(jīng)常變化的問題,并且提供負載均衡先巴。

service負載均衡策略設(shè)置:

service可以通過servicename解析需要強依賴coredns組件

kube-proxy:監(jiān)聽集群中的對 api-server 中的 service & endpoint 進行 watch ,一旦檢測到更新則往 iptables 里全量推送

新的轉(zhuǎn)發(fā)規(guī)則

mode參數(shù):控制使用iptables或者ipvs

iptables和ipvs

ipvs:IPVS為大型集群提供了更好的可擴展性和性能其爵。

IPVS支持比iptables更復(fù)雜的負載平衡算法(最小負載,最少連接伸蚯,位置摩渺,加權(quán)等)。

IPVS支持服務(wù)器健康檢查和連接重試等

service有四種類型

ExternalName:用來做集群外部服務(wù)引用的朝卒,需要externalIPs參數(shù)等

ClusterIP:通過集群的內(nèi)部 IP 暴露服務(wù)证逻,選擇該值,服務(wù)只能夠在集群內(nèi)部可以訪問抗斤,這也是默認的 ServiceType

NodePort:通過每個 Node 上的 IP 和靜態(tài)端口(NodePort)暴露服務(wù)

LoadBalancer:使用云提供商的負載局衡器囚企,可以向外部暴露服務(wù)

------------------------------------------------------------------------------------------------------------------------

Ingress

Service雖然解決了服務(wù)發(fā)現(xiàn)和負載均衡的問題,但它在使用上還是有一些限制

只支持4層負載均衡瑞眼,沒有7層功能

對外訪問時龙宏,NodePort類型需要在外部搭建額外的負載均衡,而LoadBalancer要求kubernetes必須跑在支持的cloud provider上

ingress controller

ngress controller通過與kubernetes API交互伤疙,動態(tài)的去感知集群中Ingress規(guī)則變化银酗,然后讀取它,按照它自己的模板生成一

段nginx配置徒像,再寫到nginx Pod中黍特,最后reload以下

ingress:

就是一段nginx負載的配置文件

三種常用的模式

1:ingress-controller service

2:Traefik 微云應(yīng)用而生無需重啟操作

3:Envoy(服務(wù)網(wǎng)格目前習慣使用的 查看)

------------------------------------------------------------------------------------------------------------------------

網(wǎng)絡(luò)策略:networkpolicy

------------------------------------------------------------------------------------------------------------------------

虛擬機設(shè)置靜態(tài)ip

編輯ifcfg-eno16777736文件

#static assignment

NM_CONTROLLED=no #表示該接口將通過該配置文件進行設(shè)置,而不是通過網(wǎng)絡(luò)管理器進行管理

ONBOOT=yes #開機啟動

BOOTPROTO=static #靜態(tài)IP

IPADDR=192.168.1.122 #本機地址

NETMASK=255.255.255.0 #子網(wǎng)掩碼

GATEWAY=192.168.1.1 #默認網(wǎng)關(guān)

------------------------------------------------------------------------------------------------------------------------

隧道網(wǎng)絡(luò):

二層虛擬化網(wǎng)絡(luò):只識別MAC地址锯蛀,不識IP地址

三層虛擬化網(wǎng)絡(luò):不但識別MAC地址灭衷,還能把MAC幀中的IP地址

core-dns:提供域名解析服務(wù)

flannel:負責集群的網(wǎng)絡(luò)分配

calico:負責集群的網(wǎng)絡(luò)策略

NAT:網(wǎng)絡(luò)地址轉(zhuǎn)換

macvlan:網(wǎng)卡虛擬化方案,它可以為一張物理網(wǎng)卡設(shè)置多個mac地址旁涤,相當于物理網(wǎng)卡施展了影分身之術(shù)翔曲,由一個變多個,同時要求物理

網(wǎng)卡打開混雜模式劈愚。

vxlan:虛擬可擴展局域網(wǎng)瞳遍,是一種 overlay 網(wǎng)絡(luò)技術(shù)

Overlay網(wǎng)絡(luò):一種網(wǎng)絡(luò)架構(gòu)上疊加的虛擬化技術(shù)模式,疊加網(wǎng)絡(luò)

MTU值:數(shù)據(jù)鏈路層提供租后的mtu值菌羽,用來保證vxlan報文的順利傳輸掠械,

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子份蝴,更是在濱河造成了極大的恐慌犁功,老刑警劉巖氓轰,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚夫,死亡現(xiàn)場離奇詭異,居然都是意外死亡署鸡,警方通過查閱死者的電腦和手機案糙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靴庆,“玉大人时捌,你說我怎么就攤上這事÷悖” “怎么了奢讨?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焰薄。 經(jīng)常有香客問我拿诸,道長,這世上最難降的妖魔是什么塞茅? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任亩码,我火速辦了婚禮,結(jié)果婚禮上野瘦,老公的妹妹穿的比我還像新娘描沟。我一直安慰自己,他們只是感情好鞭光,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布吏廉。 她就那樣靜靜地躺著,像睡著了一般惰许。 火紅的嫁衣襯著肌膚如雪席覆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天啡省,我揣著相機與錄音娜睛,去河邊找鬼。 笑死卦睹,一個胖子當著我的面吹牛畦戒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播结序,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼障斋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垃环,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邀层,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后遂庄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寥院,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年涛目,在試婚紗的時候發(fā)現(xiàn)自己被綠了秸谢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡霹肝,死狀恐怖估蹄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沫换,我是刑警寧澤臭蚁,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站讯赏,受9級特大地震影響垮兑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜待逞,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一甥角、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧识樱,春花似錦嗤无、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至割疾,卻和暖如春嚎卫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宏榕。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工拓诸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人麻昼。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓奠支,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抚芦。 傳聞我的和親對象是個殘疾皇子倍谜,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容