近來Docker原來越火,也吸引了我這個6年虛擬化從業(yè)者的注意。筆者對Docker的技術(shù)細(xì)節(jié)并不十分熟悉,也還在學(xué)習(xí)過程中。但筆者見證了虛擬化技術(shù)興起的全過程,參考對照虛擬化技術(shù),筆者對Docker為什么會在當(dāng)前這個時間點火起來,Docker與虛擬化的技術(shù)對比,我們該怎么辦等相關(guān)問題有一些自己的理解。意見不一定正確,歡迎拍磚。 Dokcer和Kubernetes為什么此時興起嘗過虛擬化的甜,想來點應(yīng)用的辣隨著x86服務(wù)器,KVM等虛擬化技術(shù),以及OpenStack等IaaS管理平臺的普及和成熟,VM可以在不同X86服務(wù)器廠商的硬件平臺上在線無縫遷移了。硬件差異化不斷縮小甚至消失,軟件的重要性不斷提升,IT真正進(jìn)入"軟件定義數(shù)據(jù)中心"的時代。并且人們發(fā)現(xiàn),虛擬化后的IT在部署簡單化,資源利用率,高可用性,維護(hù)便利性等方面收獲了的巨大的收益。在這個背景下,IT部門提出了更高的要求,如何將應(yīng)用在不同操作系統(tǒng)間實現(xiàn)無縫遷移,將開發(fā)和生產(chǎn)統(tǒng)一,做到"構(gòu)建一次,到處運(yùn)行"?并且能否讓應(yīng)用的部署,分發(fā),負(fù)載均衡,高可用性,監(jiān)控運(yùn)維等方面也與虛擬機(jī)一樣有更統(tǒng)一和更簡單的方法呢?在這個時間點,Docker和Kubernetes出現(xiàn)了。受微服務(wù)理念的“蠱惑”微服務(wù)的思路不是開發(fā)一個巨大的單體式的應(yīng)用,而是將應(yīng)用分解為小的、互相連接的微服務(wù)。一個微服務(wù)一般完成某個特定的功能。一些微服務(wù)還會發(fā)布API給其它微服務(wù)和應(yīng)用客戶端使用。運(yùn)行時,一個微服務(wù)實例就可以是一個Docker容器,所以微服務(wù)天然需要Docker。微服務(wù)帶來的好處有:第一軟件工程上多部門更好協(xié)作,第二軟件本身的擴(kuò)展性更強(qiáng)。下圖是微服務(wù)的搜索圖,而我們知道Docker正是2013、2014年開始火起來,所以說微服務(wù)是與Docker是"相得益彰"的關(guān)系。互聯(lián)網(wǎng)公司DevOps們"搖旗吶喊"DevOps興起于互聯(lián)網(wǎng)公司,基本理念是開發(fā)和運(yùn)維合為一體,把開源工具拿過來再根據(jù)自己的業(yè)務(wù)特點稍加改動,測試通過后就上線支撐公司的產(chǎn)品和服務(wù),并一邊運(yùn)維一邊改進(jìn)。在DevOps出現(xiàn)之前,開發(fā)的工作流程是:市場調(diào)研,需求分析,系統(tǒng)設(shè)計,軟件編碼,單元測試,集成測試,系統(tǒng)測試,軟件發(fā)布。運(yùn)維人員的工作流程是:安裝服務(wù)器,安裝軟件,配置軟件,系統(tǒng)運(yùn)維。很明顯在老的模型中,運(yùn)維人員地位低下,整天做著重復(fù)且枯燥的工作,并且開發(fā)和運(yùn)維之間相互等待資源環(huán)境,軟件版本,以及buglist。所以能不能運(yùn)維專注于:1)提供,維護(hù),監(jiān)控平臺;2)提供工具。開發(fā)利用運(yùn)維的工具發(fā)布,維護(hù)自己的產(chǎn)品或服務(wù)呢?互聯(lián)網(wǎng)的神仙/屌絲們很快發(fā)現(xiàn),Docker的“構(gòu)建一次,到處運(yùn)行”正是他們需要的。 組織IT服務(wù)云化,平臺化的"Next"IaaS平臺經(jīng)過長時間的市場教育和技術(shù)教育,終于在2015、2016開始大規(guī)模的普及化和落地。政府,軍工,事業(yè)單位,大中小型企業(yè)正如火如荼的進(jìn)行著IT服務(wù)云化的過程。道路選擇上中小型企業(yè)選擇的是公有云,政府,軍工,事業(yè)單位,大型企業(yè)一般都是自建私有云,像12306這種某時間段對IT有大規(guī)模溢出需求的單位,更適合的是混合云。所有的組織都需面對客戶,也都有的業(yè)務(wù)和數(shù)據(jù)。當(dāng)今世界發(fā)展的趨勢是:
所以呢,未來,IT服務(wù)需要更輕量(100~1000容器/Node),更高效(無GuestOS開銷),更敏捷(DevOps理念)的平臺。當(dāng)前,考慮原有業(yè)務(wù)遷移的便利性,筆者認(rèn)為以虛擬化為核心的云平臺更勝任。 Docker與虛擬化的比對分析淺層技術(shù)對比對Docker稍有接觸的人應(yīng)該都見過下圖,無需更多解釋,Dokcer減少Guest OS這一層級,所以更輕量和更高性能。深層技術(shù)對比但用戶很少直接使用Docker,而是要使用Docker為核心的平臺系統(tǒng),那其實對比項還是蠻多的。從上表可以看出:a. 容器更高效,更敏捷,更好維護(hù);b. 虛擬化在安全性和支持廣泛性上有天然優(yōu)勢;c. 管理平臺成熟度上,Docker和Kubernetes還有很長的路要走。 適用場景不同對于高I/O要求的業(yè)務(wù),例如數(shù)據(jù)庫服務(wù),建議部署Docker+物理機(jī),因為在虛擬機(jī)中部署Docker,I/O性能將受到虛擬機(jī)的限制。對于虛擬桌面服務(wù)等強(qiáng)調(diào)租戶權(quán)限和安全的業(yè)務(wù),建議采用虛擬機(jī)方式,虛擬機(jī)的多租戶強(qiáng)隔離特性,保證租戶在擁有虛機(jī)root權(quán)限的同時,其他租戶和主機(jī)的安全。此外,大部分業(yè)務(wù)系統(tǒng)將適用于虛擬機(jī)+Docker形式的組合,操作系統(tǒng)和Docker引擎采用虛擬機(jī)鏡像封裝,平臺軟件、業(yè)務(wù)組件等與業(yè)務(wù)相關(guān)軟件采用容器鏡像封裝,為實現(xiàn)安全隔離和資源的高利用率,基本應(yīng)該遵循:不同租戶的業(yè)務(wù)運(yùn)行采用虛擬機(jī)隔離,相似類型的業(yè)務(wù)部署在同一組容器上的思路。我們該怎么辦首先介紹下筆者公司產(chǎn)品的情況,2011年開始我們以KVM為基礎(chǔ)自主開發(fā)了OPV-Suite平臺(IaaS云平臺)和OPV-VDI(桌面虛擬化)產(chǎn)品,主要面向私有云客戶,也向公有云服務(wù)商供應(yīng)產(chǎn)品和技術(shù)。面對Docker的挑戰(zhàn),我們在確定還需在虛擬化產(chǎn)品繼續(xù)深耕下去的同時,還該怎么辦呢?未來云產(chǎn)業(yè)格局分布盜一張我的領(lǐng)導(dǎo)對云產(chǎn)業(yè)玩家的分析圖。明顯看出云產(chǎn)業(yè)鏈里的價值高地正在往云服務(wù)商處聚集,當(dāng)然這個服務(wù)可以是公有云服務(wù),也可以是私有云服務(wù),還可以是混合云服務(wù)。筆者一直認(rèn)為,云消費(fèi)者并不關(guān)心,你這個服務(wù)商使用的是虛擬化技術(shù)還是Docker,更不關(guān)心你自己寫的還是基于開源平臺改的。他關(guān)心的是你的服務(wù)是否可靠,是否穩(wěn)定,是否便宜,是否安全。所以,根據(jù)你團(tuán)隊的特點,選擇你們自己最擅長的技術(shù),為云消費(fèi)者提供有競爭力的服務(wù),才是未來我們能否立足的核心。 技術(shù)上先看看別人家怎么做用戶不關(guān)心技術(shù),我們的關(guān)心呀。首先聲明,下表的分析數(shù)據(jù)是從2016容器大會上各廠商PPT上了解到的,必然既不全面也不深刻。可以明顯看出分為三個陣容:基于IaaS云平臺,基于Kubernetes,基于Mesos;單從數(shù)量上看勢均力敵。為什么會這樣,筆者認(rèn)為第一Docker還在迅速發(fā)展過程中,到底怎么做大家還沒有統(tǒng)一的意見。第二各個互聯(lián)網(wǎng)公司的技術(shù)團(tuán)隊擅長的東西并不一樣。 我們怎么辦好,該得出結(jié)論了,我們該怎么辦呢?提供用戶需要的云計算產(chǎn)品和服務(wù),適合虛擬化的就虛擬化,適合Docker的就用Docker,并以自己團(tuán)隊最擅長的方式構(gòu)建出平臺來。 DCOS應(yīng)該是怎樣的?筆者認(rèn)為融合了虛擬化和容器的平臺,我們暫且叫它DCOS(數(shù)據(jù)中心操作系統(tǒng))的體系結(jié)構(gòu)應(yīng)該是這樣的,篇幅有限,筆者將在第二篇文章中詳細(xì)介紹各模塊的功能和實現(xiàn)方法。 |
|