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