亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 48652 | 回復(fù): 1
打印 上一主題 下一主題

容器網(wǎng)絡(luò)Calico進(jìn)階實(shí)踐 | 褚向陽 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2017-01-11 16:01 |只看該作者 |倒序?yàn)g覽
http://click.aliyun.com/m/9247/[url=http://click.aliyun.com/m/9247/]http://click.aliyun.com/m/9247/[/url]

摘要: 作者分享作為使用者看到的 Calico 的變化(包括組件、文檔和 calicoctl );Demo 一些簡單的例子,會(huì)和 MacVLAN 做一下對(duì)比說明原理;總結(jié)下適合 Calico 的使用場(chǎng)景。

各位晚上好,我是數(shù)人云的褚向陽,接下來要跟大家分享的主題是《容器網(wǎng)絡(luò)Calico進(jìn)階實(shí)踐》.
距離上次聊 Calico 已經(jīng)過去快半年的時(shí)間了,數(shù)人云也一直在努力將容器網(wǎng)絡(luò)方案應(yīng)用到企業(yè)客戶的環(huán)境中,Calico v2.0 也馬上就要發(fā)布了,這次跟大家一起感受下新版.
需要說明下,本人跟 Calico 沒有任何直接關(guān)系,也只是個(gè)"吃瓜群眾",做為使用者,想跟大家聊聊心得而已。
這次分享的內(nèi)容主要包括:
  • 簡單總結(jié)下作為使用者我看到的 Calico 的變化,包括組件,文檔和 calicoctl ;
  • Demo 一些簡單的例子,會(huì)和 MacVLAN 做一下對(duì)比說明原理;
  • 最后總結(jié)下適合 Calico 的使用場(chǎng)景;
Calico 簡介回顧
首先,還是簡單的回顧下 Calico 的架構(gòu)和關(guān)鍵組件,方便大家理解。
Calico 架構(gòu)
Calico 是一個(gè)三層的數(shù)據(jù)中心網(wǎng)絡(luò)方案,而且方便集成 OpenStack 這種 IaaS 云架構(gòu),能夠提供高效可控的 VM、容器、裸機(jī)之間的通信。

結(jié)合上面這張圖,我們來過一遍 Calico 的核心組件:
  • Felix,Calico agent,跑在每臺(tái)需要運(yùn)行 workload 的節(jié)點(diǎn)上,主要負(fù)責(zé)配置路由及 ACLs 等信息來確保 endpoint 的連通狀態(tài);
  • etcd,分布式鍵值存儲(chǔ),主要負(fù)責(zé)網(wǎng)絡(luò)元數(shù)據(jù)一致性,確保 Calico 網(wǎng)絡(luò)狀態(tài)的準(zhǔn)確性;
  • BGP Client(BIRD), 主要負(fù)責(zé)把 Felix 寫入 kernel 的路由信息分發(fā)到當(dāng)前 Calico 網(wǎng)絡(luò),確保 workload 間的通信的有效性;
  • BGP Route Reflector(BIRD), 大規(guī)模部署時(shí)使用,摒棄所有節(jié)點(diǎn)互聯(lián)的 mesh 模式,通過一個(gè)或者多個(gè) BGP Route Reflector 來完成集中式的路由分發(fā);
通過將整個(gè)互聯(lián)網(wǎng)的可擴(kuò)展 IP 網(wǎng)絡(luò)原則壓縮到數(shù)據(jù)中心級(jí)別,Calico 在每一個(gè)計(jì)算節(jié)點(diǎn)利用 Linux kernel 實(shí)現(xiàn)了一個(gè)高效的 vRouter 來負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā) 而每個(gè) vRouter 通過 BGP 協(xié)議負(fù)責(zé)把自己上運(yùn)行的 workload 的路由信息像整個(gè) Calico 網(wǎng)絡(luò)內(nèi)傳播 - 小規(guī)模部署可以直接互聯(lián),大規(guī)模下可通過指定的 BGP route reflector 來完成。
這樣保證最終所有的 workload 之間的數(shù)據(jù)流量都是通過 IP 包的方式完成互聯(lián)的。

Calico 節(jié)點(diǎn)組網(wǎng)可以直接利用數(shù)據(jù)中心的網(wǎng)絡(luò)結(jié)構(gòu)(支持 L2 或者 L3),不需要額外的 NAT,隧道或者 VXLAN overlay network。

如上圖所示,這樣保證這個(gè)方案的簡單可控,而且沒有封包解包,節(jié)約 CPU 計(jì)算資源的同時(shí),提高了整個(gè)網(wǎng)絡(luò)的性能。
此外,Calico 基于 iptables 還提供了豐富而靈活的網(wǎng)絡(luò) policy, 保證通過各個(gè)節(jié)點(diǎn)上的 ACLs 來提供 workload 的多租戶隔離、安全組以及其他可達(dá)性限制等功能。
更詳細(xì)的介紹大家可以參考之前的分享:
http://edgedef.com/docker-networking.html
或者
http://dockone.io/article/1489
Calico 的新版變化
接下來簡單介紹下 Calico 新版帶來了哪些變化
組件層面:
先看一下 v2.0.0-rc2 中包含的組件列表:
  • v2.0.0-rc2
  • felix 2.0.0-rc4
  • calicoctl v1.0.0-rc2
  • calico/node v1.0.0-rc2
  • calico/cni v1.5.3
  • libcalico v0.19.0
  • libcalico-go v1.0.0-rc4
  • calico-bird v0.2.0-rc1
  • calico-bgp-daemon v0.1.1-rc2
  • libnetwork-plugin v1.0.0-rc3
  • calico/kube-policy-controller v0.5.1
  • networking-calico 889cfff
對(duì)比下 v1.5 或者之前的版本:
  • v1.5.0
  • felix v1.4.1b2
  • calicoctl v0.22.0
  • calico/node v0.22.0
  • calico/node-libnetwork v0.9.0
  • calico/cni v1.4.2
  • ibcalico v0.17.0
  • calico-bird v0.1.0
  • calico/kube-policy-controller v0.3.0

可以看到組件層面 Calico 也發(fā)生了比較大的變化,其中新增:
  • libcalico-go (Golang Calico library function, used by both calicoctl, calico-cni and felix)
  • calico-bgp-daemon (GoBGP based Calico BGP Daemon,alternative to BIRD)
  • libnetwork-plugin (Docker libnetwork plugin for Project Calico, integrated with the calico/node image)
  • networking-calico (OpenStack/Neutron integration for Calico networking)
總結(jié)來看,就是組件語言棧轉(zhuǎn)向 Golang,包括原來 Python 的 calicoctl 也用 Golang 重寫了; 順便說一下,這也和數(shù)人云的語言棧從 Python Golang 統(tǒng)一到 Golang 是差不多的周期,可以看出 Golang 在容器圈的影響力之大; 同時(shí)面向開源,給使用者提供更好的擴(kuò)展性(兼容 GoBGP)和集成能力(OpenStack/Neutron)。
使用層面:
更好的文檔和積極響應(yīng)的 Slack:
http://docs.projectcalico.org/v2.0/introduction/
開源軟件的文檔對(duì)于使用者來說很重要,Calico 的文檔正在變的越來越好,盡量保證每種使用場(chǎng)景(docker,Mesos, CoreOS, K8s, OpenStack 等) 都能找到可用的參考。
除此之外,Calico 還維護(hù)了一個(gè)很快響應(yīng)的 Slack,有問題可以隨時(shí)到里邊提問,這種交互對(duì)開源的使用者來說也是很好的體驗(yàn)。
重新面向 Kubernetes 改寫的 calicoctl UX 模型
毫無疑問,這是 Calico 為了更好的集成到 Kubernetes 所做出的努力和改變,也是對(duì)越來越多使用 k8s 同時(shí)又想嘗試 Calico 網(wǎng)絡(luò)的用戶的好消息,這樣大家就可以像在 k8s 中定義 資源模型一樣通過 YAML 文件來定義 Calico 中的 Pool,Policy 這些模型了,同時(shí)也支持 label&selector 模式,保證了使用上的一致性。 具體的 Calico 定義資源模型的例子在后面的 Demo 中會(huì)有體現(xiàn)。
Calico CNI 及 Canal
還有一個(gè)變化,就是 Canal 的出現(xiàn),面向 CNI 的基于訪問控制的容器網(wǎng)絡(luò)方案。
Container Network Interface CNI 容器網(wǎng)絡(luò) spec 是由 CoreOS 提出的,被 Mesos, Kubernetes 以及 rkt 等接受引入 使用。
Calico 在對(duì) Docker 家的 CNM 和 libnetwork 提供更好的支持的同時(shí),為了更親和 Kubernetes ,和更好的對(duì) CNI 的支持,Metaswitch 和 CoreOS 一起組建了 新的公司 TiGERA(https://www.tigera.io/),主推 Canal 將 Calico 的 policy 功能加入到 Flannel 的網(wǎng)絡(luò)中,為和 k8s 的網(wǎng)絡(luò)提供更好的 ACL 控制。
Calico 組件原理 Demo
為了理解 Calico 工作原理,順便體驗(yàn)新版 Calico,我們準(zhǔn)備了兩套 Demo 環(huán)境,一套是新版 Calico,另一套是對(duì)比環(huán)境 MacVLAN。
Calico 以測(cè)試為目的集群搭建,步驟很簡單,這里不展開了, 大家可以直接參考 http://docs.projectcalico.org/ma ... installation/manual
MacVlan 的集群搭建,步驟也相對(duì)簡單, 參考:https://github.com/alfredhuang21 ... /blob/master/docker跨主機(jī)macVLAN網(wǎng)絡(luò)配置.md
這里默認(rèn)已經(jīng)有了兩套 Docker Demo 集群:
  • Calico 網(wǎng)絡(luò)的集群,分別是:10.1.1.103(calico01) 和 10.1.1.104(calico02)
  • MacVLAN 集群,分別是:10.1.1.105 和 10.1.1.106

Demo 1: Calico 三層互聯(lián)
calicoctl node status 截圖:
同時(shí),已經(jīng)有 IP Pool 創(chuàng)建好,是:192.168.0.0/16

calicoctl get pool 截圖:
當(dāng)前集群也已經(jīng)通過使用 calico driver 和 IPAM 創(chuàng)建了不同的 docker network,本次 demo 只需要使用 net1

docker network ls 截圖:

calicoctl get profile 截圖:


下面我們使用 net1 這個(gè)網(wǎng)絡(luò),在兩臺(tái)機(jī)器上各啟動(dòng)一個(gè)容器:
在 calico01 上:
docker run --net net1 --name workload-A -tid busybox
在 calico02 上:
docker run --net net1 --name workload-B -tid busybox
容器連通性測(cè)試截圖:


Demo 2: MacVLAN 二層互聯(lián)
創(chuàng)建 MacVLAN 網(wǎng)絡(luò),分別在兩臺(tái)主機(jī)上使用相同命令
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp0s3 -o macvlan_mode=bridge 192_1
創(chuàng)建容器:
10.1.1.105:
docker run --net=192_1 --ip=192.168.1.168 -id --name test01 busybox sh
10.1.1.106:
docker run --net=192_1 --ip=192.168.1.188 -id --name test11 busybox sh
測(cè)試網(wǎng)絡(luò)連通性:
docker exec test01 ping -c 4 192.168.1.188

Calico IP 路由實(shí)現(xiàn)及 Wireshark 抓包

根據(jù)上面這個(gè) Calico 數(shù)據(jù)平面概念圖,結(jié)合我們的例子,我們來看看 Calico 是如何實(shí)現(xiàn)跨主機(jī)互通的:
兩臺(tái) slave route 截圖:


對(duì)照兩臺(tái)主機(jī)的路由表,我們就知道,如果主機(jī) 1 上的容器(192.168.147.195)想要發(fā)送數(shù)據(jù)到主機(jī) 2 上的容器(192.168.38.195), 那它就會(huì) match 到響應(yīng)的路由規(guī)則 192.168.38.192/26 via 10.1.1.104,將數(shù)據(jù)包轉(zhuǎn)發(fā)給主機(jī) 2,主機(jī) 2 在根據(jù) 192.168.38.195 dev cali2f648c3dc3f 把數(shù)據(jù)包發(fā)到對(duì)應(yīng)的 veth pair 上,交給 kernel。
那整個(gè)數(shù)據(jù)流就是:
container -> calico01 -> one or more hops -> calico02 -> container
最后,讓我們來看看 Wireshark 抓包的截圖對(duì)比:
Calico:


MacVLAN:

從上圖對(duì)比中也能看出,不同于 MacVLAN,Calico 網(wǎng)絡(luò)中容器的通信的數(shù)據(jù)包在節(jié)點(diǎn)之間使用節(jié)點(diǎn)的 MAC 地址,這樣沒有額外的 ARP 廣播的,這是 Calico 作為三層方案的特點(diǎn)之一。
但這同時(shí)也表明了,節(jié)點(diǎn)之間網(wǎng)絡(luò)部分如果想對(duì)于容器間通信在二層做 filter 或者控制在 Calico 方案中是不起作用的。
這樣,一個(gè)簡單的跨主機(jī)的 Calico 容期間三層通信就 Demo 完了,其他的 Calico 特性這里就一一介紹了,鼓勵(lì)大家可以自己使用 VMs 搭起來親自試試,遇到問題隨時(shí)到 Slack 去聊聊。
Calico 使用場(chǎng)景
Calico 既可以用在公有云,也可以部署在私有環(huán)境,我們接下來主要集中討論下 Calico 在私有云中的使用場(chǎng)景2。
二層網(wǎng)絡(luò)
Calico 適用于二層網(wǎng)絡(luò),原因首先就是不會(huì)因?yàn)槿萜鲾?shù)量的變化帶來 ARP 廣播風(fēng)暴,上面的 Demo 中,我們已經(jīng)看出了,Calico 中容器間的相關(guān)通信在二層使用的是節(jié)點(diǎn)的 MAC 地址, 這樣也就是說,廣播上的增長只是主機(jī)層上的增減,這在數(shù)據(jù)中心本來就是可控的;其次,就是網(wǎng)絡(luò)擾動(dòng),同樣的道理,使用 Calico 也不用擔(dān)心因?yàn)槿萜鞯念l繁啟動(dòng)停止所帶來的網(wǎng)絡(luò)擾動(dòng); 最后,Calico 的 IP 空間使用是相對(duì)自由的,這樣保證足夠的 IP 資源使用。
當(dāng)然,任何事情都是兩面,使用 Calico 要理解,Calico 的 IP 是集群內(nèi),也就是說如果需要使用容器 IP 和 外部互聯(lián)網(wǎng)進(jìn)行通訊,還需要進(jìn)行相應(yīng)的配置。 比如:如果有對(duì)外通訊需求,則要開啟 nat-outgoing;如果需要對(duì)內(nèi)可達(dá),需要配置和維護(hù)對(duì)應(yīng)的路由規(guī)則或者通過支持 BGP 的外部交換/路由設(shè)備,具體可以參考3。
此外,上面的 Demo 也說明了,如果有需求對(duì)容器間通信二層數(shù)據(jù)包有分析和控制的化,Calico 也是沒辦法的,這樣也就是說如果 DC 已經(jīng)集成了一些商業(yè)網(wǎng)絡(luò)控制模塊或者 SDN,則要通盤考慮, 是否合適引入 Calico。
最后,提一個(gè)小點(diǎn),Calico 的數(shù)據(jù)存儲(chǔ),需要對(duì)每個(gè) calico node 指定唯一標(biāo)示,默認(rèn)需要使用 hostname ,也可以在 calicoctl node run 時(shí)通過 --name 指定, 如果使用默認(rèn)的 hostname,就要求在初始化 Calico 集群之前,規(guī)劃好各個(gè)主機(jī)的 hostname。
三層網(wǎng)絡(luò)
Calico 也能使用在三層的網(wǎng)絡(luò)中,但是相比二層是要復(fù)雜,需要更多的 net-eng 介入,個(gè)人水平有限,就不展開說了,有興趣的可以直接參考: http://docs.projectcalico.org/ma ... interconnect-fabric
總結(jié):
隨著容器網(wǎng)絡(luò)的發(fā)展,數(shù)人云會(huì)越來越多的關(guān)注如何把先進(jìn)的容器網(wǎng)絡(luò)技術(shù)更好的"落地"企業(yè),數(shù)人云年底新版本也會(huì)加入了適配數(shù)人云的 Calico 安裝配置手冊(cè)給最終用戶。
我們會(huì)一直關(guān)注開源,包括 Calico, Cisco Contiv, DPDK等,相信后面各個(gè)開源方案都會(huì)在易用性、易維護(hù)性上繼續(xù)提升,同時(shí)也一定會(huì)加強(qiáng)對(duì)各個(gè)容器編排方案的支持。
回過頭看 Calico 的新版本發(fā)展,也印證了這些要求:
易用性,兼容 k8s 的 calicoctl UX;
易維護(hù)性,Golang 重寫;Calico 本身為三層方案,而且Calico 能夠兼容二層和三層的網(wǎng)絡(luò)設(shè)計(jì),可以和現(xiàn)有 DC 網(wǎng)絡(luò)的整合和維護(hù);
更好的和現(xiàn)有方案的集成,包括 OpenStack,CNI/Canal,Mesos 等,Calico 在網(wǎng)絡(luò)方案的適用性方案還是很有競爭力的;
2016年馬上就要過去了,作為容器網(wǎng)絡(luò)的愛好者使用者,個(gè)人希望在 2017 年數(shù)人云能將真正成熟穩(wěn)定的容器網(wǎng)絡(luò)方案帶給大家。
能力所限,文中難免有錯(cuò)誤,隨時(shí)歡迎指正。謝謝!
問答環(huán)節(jié)
問題1:畫網(wǎng)絡(luò)拓?fù)鋱D,有什么好用的開源工具么?最好是免費(fèi)的,開源的(來自:中生代技術(shù)(成渝一家)@鄒晨-佳網(wǎng))
答:其實(shí)我個(gè)人不怎么畫網(wǎng)絡(luò)拓?fù)鋱D的,不過如果是 windows 以前就是用 Visio,最近畫圖都用 Gliffy,Chrome 有插件的。如果是放在頁面中的動(dòng)態(tài)生成圖,建議看看 D3.

問題2:calico有具體的性能數(shù)據(jù)嗎?(來自:中生代技術(shù)(西安)- @李釗-ZTE-研發(fā))
答:之前做過簡單的性能對(duì)比測(cè)試,總體來看還是很不錯(cuò)的,具體見圖:


問題3:遇到問題隨時(shí)到 Slack 去聊聊,想請(qǐng)教下這個(gè)跟slack有什么關(guān)系?(來自:中生代技術(shù)(成渝一家)@鄒晨-佳網(wǎng))
答:這里指的是 calico 的 slack:https://slack.projectcalico.org/


論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2017-01-14 09:53 |只看該作者
您好,我這邊是香港服務(wù)器租用與托管的。
CPU:G630  雙核     內(nèi)存:4G     硬盤:500G          500/月
CPU:I3       雙核     內(nèi)存:4G    SSD 硬盤:120G    600/月
CPU:I5       四核     內(nèi)存:4G     SSD硬盤:120G    800/月
CPU:I7       四核     內(nèi)存:8G     SSD硬盤: 240G  1000/月
詳情請(qǐng)加Q了解哦~2851041330
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP