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