从容器到微服务,技术架构、网络和生态详解
圖片來源:Unsplash
作者
?晗狄
文章來源
架構(gòu)師技術(shù)聯(lián)盟
如需轉(zhuǎn)載,請(qǐng)聯(lián)系原作者授權(quán)
談起容器技術(shù),不得不提Docker技術(shù)。
Docker?是?PaaS?提供商?DotCloud?開源的一個(gè)高級(jí)容器引擎,源代碼托管在?Github?上,基于Go語言并遵從Apache2.0協(xié)議開源。Docker相當(dāng)于物理行業(yè)的集裝箱對(duì)物流的影響一樣,成為Container上運(yùn)行鏡象的統(tǒng)一打包和交換的標(biāo)準(zhǔn)。
我們知道,Docker使用了容器的環(huán)境隔離和資源限制技術(shù),把鏡像和運(yùn)行環(huán)境打包到Image中。Register支持容器上傳和下載功能。
Docker同時(shí)提供了Build,Ship和Run,運(yùn)維只需要在環(huán)境重配置好Docker,剩下的工作就是部署容器,實(shí)現(xiàn)Build Once Run Anywhere和Configure Once Run Anything;從而促進(jìn)了容器技術(shù)的爆發(fā)。
在架構(gòu)上,Docker采用Client Server模式和插件式架構(gòu)設(shè)計(jì),Docker的后端采用非常松耦合的架構(gòu),模塊之間相互獨(dú)立,用戶通過Docker Client與Docker Daemon建立通信,并發(fā)送請(qǐng)求給Docker Daemon。
Docker Daemon提供Server功能接受Docker Client的請(qǐng)求;隨后通過Engine執(zhí)行Docker內(nèi)部的一系列工作,每項(xiàng)工作都是以一個(gè)Job的形式的存在。
Docker講底層容器運(yùn)行時(shí)剝離出來,實(shí)現(xiàn)更好的平臺(tái)無關(guān)性。LibContainer是對(duì)各種容器的抽象,發(fā)展為RunC,并貢獻(xiàn)給OCP組織作為定義容器環(huán)境的標(biāo)準(zhǔn)。Docker容器的三大編排工具,Compose、Swarm和Machine。Compose是服務(wù)編排工具,是定義和運(yùn)行Docker主機(jī)上多容器應(yīng)用的工具,通過單獨(dú)文件,定義多容器應(yīng)用并運(yùn)行容器。
Docker的網(wǎng)絡(luò)技術(shù)和能力一直是容器技術(shù)中最難、也是最不看好的技術(shù)之一,Libnetwork是Docker公司正在開發(fā)的新的網(wǎng)絡(luò)底層架構(gòu),由libcontainer和Docker Engine中的網(wǎng)絡(luò)相關(guān)的代碼合并而成。Libnetwork的目標(biāo)是引入了容器網(wǎng)絡(luò)模型(CNM),并為應(yīng)用程序提供一致的編程API接口以及網(wǎng)絡(luò)抽象。?Libnetwork的容器網(wǎng)絡(luò)模型包含了三個(gè)重要概念,Network Sandbox,Endpoint和Network。
Weave創(chuàng)建了Networking Plugin技術(shù),目前成熟的有Networking Plugin和Volume Plugin。
Weave方案包含兩大組件,用戶態(tài)Shell腳本和Weave虛擬路由容器。Weave虛擬路由容器需要在每個(gè)宿主機(jī)上布置第三方插件,把不同宿主機(jī)的Route容器連接起來,使得Docker工具生態(tài)無縫集成到Docker。
Weave創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò),鏈接多個(gè)主機(jī)的Docker容器,并使他們可以被自動(dòng)發(fā)現(xiàn),對(duì)使用該網(wǎng)絡(luò)的應(yīng)用來說,所以容器就像是鏈接在同一個(gè)網(wǎng)絡(luò)交換機(jī)上,無需配置端口映射、鏈路等參數(shù)。
容器和容器OS
CoreOS是最為受歡迎的容器虛擬化OS,專為Docker設(shè)計(jì)和內(nèi)核裁剪。?CoreOS中有兩個(gè)關(guān)鍵容器集群管理工具,etcd主要實(shí)現(xiàn)集群服務(wù)發(fā)現(xiàn)、信息共享和數(shù)據(jù)同步;而Fleet實(shí)現(xiàn)集群狀態(tài)維護(hù)、容器操作和確保服務(wù)一致可用。
VMware也推出了容器OS系統(tǒng)Photon,在VMware上創(chuàng)建VM,并且安裝Photon系統(tǒng)即可部署運(yùn)行容器,并且支持目前主流的Docker、Rkt和PGC容器平臺(tái)。Photon可以容器管理認(rèn)證工具Lightwave配合,可以實(shí)現(xiàn)更好的權(quán)限管理。
Docker容器和存儲(chǔ)
Docker容器在數(shù)據(jù)讀寫和存儲(chǔ)上,是采用分層和COW的存儲(chǔ)技術(shù)實(shí)現(xiàn),Docker本身的COW文件系統(tǒng)不支持?jǐn)?shù)據(jù)持久保存,在容器被刪除或重啟后,之前的文件更改就會(huì)丟失(變化的數(shù)據(jù)被以COW寫到一個(gè)新的位置)。
Volume的引入雖然解決了數(shù)據(jù)丟失問題,但是當(dāng)容器遷移后,數(shù)據(jù)卷無法跟隨Docker容器一起遷移,ClusterHQ的Flocker的出現(xiàn)恰恰解決Volume的不足,使得數(shù)據(jù)跟隨Docker遷移。
Flocker的容器和存儲(chǔ)卷遷移分為全遷移和增量同步兩個(gè)過程,配置文件描述Docker部署方式和狀態(tài),運(yùn)行配置則生效(遷移Redis);以遷移本地存儲(chǔ)(非共享存儲(chǔ))為例,整個(gè)過程為先打快照,全遷移,增量同步。
Flocker以Docker Volume Plugin的方式部署在Docker中,與Docker集成。目前共享存儲(chǔ)的支持能力比較成熟,支持的產(chǎn)品包括AWS EBS、Scale IO和XtremIO等,并且支持如AWS、Rackspace等云平臺(tái);本地存儲(chǔ)方式在技術(shù)成熟度上并不高。
Flocker通過Storage Driver屏蔽存儲(chǔ)差異,并通過存儲(chǔ)提供的Flocker標(biāo)準(zhǔn)接口實(shí)現(xiàn)對(duì)底層存儲(chǔ)操作,當(dāng)主機(jī)容器在不同主機(jī)間遷移時(shí),Flocker只需要對(duì)容器的Volume進(jìn)行主機(jī)的重映射。
Docker與PaaS
隨之容器的發(fā)展,CaaS容器即服務(wù)的概念也應(yīng)時(shí)而生,其大意就是基礎(chǔ)設(shè)施以容器的方式來供給給應(yīng)用使用。以容器為單位成為PaaS的共識(shí),基于Docker的容器打包和分發(fā)有望成為PaaS平臺(tái)的標(biāo)準(zhǔn), Docker將大幅拓寬PaaS的應(yīng)用范圍,并促進(jìn)PaaS的快速發(fā)展。
基于容器的打包一統(tǒng)新一代PaaS,第三代PaaS,DEIS、Flynn等均基于Docker,挑戰(zhàn)老的PaaS平臺(tái)。
PaaS已經(jīng)出現(xiàn)了數(shù)年時(shí)間,第一批是Azure和Heroku等公用云服務(wù),之后出現(xiàn)的Cloud Foundry和OpensShift允許用戶建立自己的PaaS,包括了內(nèi)部數(shù)據(jù)中心以及云環(huán)境?,F(xiàn)在,第三代PaaS浪潮正在到來。
Flynn是一個(gè)開源的PaaS平臺(tái),可自動(dòng)構(gòu)建部署任何應(yīng)用到Docker容器集群上運(yùn)行,其功能特性與組件設(shè)計(jì)大量參考了傳統(tǒng)的PaaS平臺(tái)Heroku。Flynn目前還不是很穩(wěn)定。但整個(gè)系統(tǒng)非常靈活,相互松耦合,便于任意組件的替換。
Docker與IaaS平臺(tái)
主流IaaS云平臺(tái)都支持Docker的運(yùn)行(AWS、Google Compute Engine、Rackspace等)。Docker彌合了不同IaaS之間的差異,Docker的輕量和可移動(dòng)性使得其比較適合用在Hybrid Cloud中。降低了IaaS服務(wù)商用戶粘性,使得跨云服務(wù)商遷移更加自由。從而使得IaaS服務(wù)商被管道化。如果Container把安全問題解決了,可能就會(huì)有比較大的變化。
出現(xiàn)基于Docker的Container as a Service或Orchestration as a Service,如Tutum,可以避免IaaS的鎖定,甚至不用關(guān)心是運(yùn)行在物理設(shè)施上,還是運(yùn)行在哪家IaaS平臺(tái)上。
2014年6月Rackspace宣布和CoreOS合作提供Baremetal as a Service方案OnMetal,結(jié)合了云計(jì)算的靈活性和基于container的高性能虛擬化,提供single tenant baremetal cloud serivce。
這種模式將影響當(dāng)前以虛擬機(jī)為核心的IaaS平臺(tái),預(yù)計(jì)后續(xù)可能出現(xiàn)同時(shí)提供Docker over Baremetal、?Docker over VM和VM三種混合的資源分配和調(diào)度云平臺(tái)。
Docker也引發(fā)了基于容器的應(yīng)用集群管理平臺(tái),如Kubernetes得到了微軟、紅帽、IBM、Vmware、Docker、Mesosphere、CoreOS和SaltStack等多家廠商的支持。容器集群管理技術(shù)可能導(dǎo)致Openstack邊緣化。
Docker與DevOps
基于Docker可以更好的實(shí)現(xiàn)DevOps。雖然有許多工具適合DevOps部署,使開發(fā)人員和操作更貼近,但Docker是一個(gè)與DevOps原則密切相關(guān)的框架。使用Docker,開發(fā)人員可以專注于他們的代碼,而不必?fù)?dān)心在生產(chǎn)環(huán)境中運(yùn)行它們的負(fù)面影響。
DevOps團(tuán)隊(duì)可以將整個(gè)容器作為容器處理,文件系統(tǒng)和依賴關(guān)系管理的分層方法使得環(huán)境的配置更容易維護(hù)。在相同的源代碼控制系統(tǒng)(如Git工作流程)中版本化和維護(hù)Dockerfiles使得它非常有效地管理多個(gè)開發(fā)/測(cè)試環(huán)境。不同環(huán)境的多個(gè)容器可以在同一VM上運(yùn)行時(shí)被隔離。Docker還可以很好地使用現(xiàn)有的工具,如Jenkins,Chef,Puppet,Ansible,Salt Stack,Nagios和Opsworks。
Docker有可能對(duì)DevOps生態(tài)系統(tǒng)產(chǎn)生重大影響。它可以從根本上改變開發(fā)人員和運(yùn)營(yíng)專業(yè)人員合作的方式。新興DevOps公司,如CloudMunch,Factor.io,Drone.io可能必須采用Docker并將其帶入他們的CI和CD解決方案。
Docker與微服務(wù)架構(gòu)
基于Docker容器和其生態(tài)系統(tǒng)的微服務(wù)架構(gòu)是下一代PaaS的核心,在Docker出現(xiàn)之前,雖然我們談?wù)撐⒎?wù)架構(gòu),但是其實(shí)是很難實(shí)現(xiàn)的。微服務(wù)要運(yùn)行,首先需要一套執(zhí)行的環(huán)境。這套環(huán)境不能對(duì)外部有依賴性。同時(shí),執(zhí)行環(huán)境的粒度又必須足夠的小,這樣才能稱之為”微“,否則必然是對(duì)資源的巨大浪費(fèi)。
一個(gè)微服務(wù)可以跑在一臺(tái)虛擬機(jī)上面,但是虛擬機(jī)粒度太大,即使最小的虛擬機(jī),也至少也有1個(gè)核。服務(wù)一個(gè)用戶的服務(wù),顯然用不了一個(gè)核。同時(shí),虛擬機(jī)有沒有一套方便的管理機(jī)制,能夠快速的讓這些服務(wù)之間能夠組合和重構(gòu)。
Docker出現(xiàn)以后,我們看到了微服務(wù)的一個(gè)非常完美的運(yùn)行環(huán)境。一個(gè)容器就是一個(gè)完整的執(zhí)行環(huán)境,不依賴外部任何的東西,具備獨(dú)立性。一臺(tái)物理機(jī)器可以同時(shí)運(yùn)行成百上千個(gè)容器,粒度細(xì)。其計(jì)算粒度足夠的小。容器可以在秒級(jí)進(jìn)行創(chuàng)建和銷毀,非常適合服務(wù)的快速構(gòu)建和重組。數(shù)量眾多的容器編排管理工具,能夠快速的實(shí)現(xiàn)?服務(wù)的組合和調(diào)度。
完
投稿啦!!!
精彩繼續(xù)
CSDN作為國內(nèi)專業(yè)的云計(jì)算服務(wù)平臺(tái),目前提供云計(jì)算、大數(shù)據(jù)、虛擬化、數(shù)據(jù)中心、OpenStack、CloudStack、機(jī)器學(xué)習(xí)、智能算法等相關(guān)云計(jì)算觀點(diǎn)、技術(shù)、平臺(tái)、實(shí)踐、云產(chǎn)業(yè)咨詢等服務(wù)。CSDN?公眾號(hào)也一直堅(jiān)持「與千萬技術(shù)人共成長(zhǎng)」的理念,深度解讀行業(yè)內(nèi)熱門技術(shù)與場(chǎng)景應(yīng)用,致力于讓所有開發(fā)者保持敏銳的技術(shù)嗅覺、對(duì)行業(yè)趨勢(shì)與技術(shù)獲得更廣闊的認(rèn)知。
文章題材
首先你需要關(guān)注我們的公眾號(hào)“CSDN云計(jì)算”,這樣你會(huì)更準(zhǔn)確了解我們需要的文章風(fēng)格;
側(cè)重于云計(jì)算領(lǐng)域相關(guān)的文章,可以是技術(shù)、運(yùn)維、趨勢(shì)等方面的務(wù)實(shí)內(nèi)容;
原創(chuàng),要求文章有鮮明觀點(diǎn)和看法。
投稿須知
?稿費(fèi):根據(jù)原創(chuàng)性、實(shí)用性和時(shí)效性等方面進(jìn)行審核,通過的文章會(huì)發(fā)布在本微信平臺(tái)。一經(jīng)采用,我們將支付作者酬勞。酬勞可能不多,這代表的是一個(gè)心意,更多是因?yàn)閻酆?#xff0c;是有識(shí)之士抒發(fā)胸懷的一種方式;
字?jǐn)?shù)要求:稿件字?jǐn)?shù)以2K-8K為宜,少于2K或多于8K都會(huì)一定程度降低閱讀愉悅感;
投稿郵箱:lijy@csdn.net。或者添加微信表明來意,微信號(hào):tangguoyemeng。請(qǐng)備注投稿+姓名+公司職位。
如果咱們的合作穩(wěn)定又愉快,還可以簽訂合同長(zhǎng)期合作哦!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的从容器到微服务,技术架构、网络和生态详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京换驾照在哪里换 办公时间
- 下一篇: 同款车型平板和自卸车的轴距一样吗