【編者的話】此次主要分享一下ZStack對IaaS和Container之間關(guān)系的一些思考。
很高興今天能在這里跟大家一起分享一下ZStack對IaaS和Container之間關(guān)系的一些思考,我先簡單介紹一下我接觸容器技術(shù)的一些背景。
2013年的時候,我還在Citrix工作,有一天梁勝和我們的架構(gòu)師Chairdeep找到我,說有一個客戶需要用到容器,讓我調(diào)研一下,當(dāng)時這個客戶主要需求是要做HPC,即高性能計算,傳統(tǒng)虛擬技術(shù)性能損耗比較大,用Bare Metal技術(shù)又失去了虛擬化的靈活性,所以我們決定用容器方案,比如在一個機器上只跑一個容器,這樣這個虛機就可以獲得近乎物理機的性能,同時具有所有虛擬化的靈活性。
最初我選擇的方向是LXC,因為這個技術(shù)我本身比較了解,也是比較流行的技術(shù),我花了幾天時間就把POC做好了。正好這個時候公司來了個新同事叫 Susan,她以前是DotCloud的銷售人員,知道我在做這個事情,建議我試試Docker。于是我又開始研究Docker,感覺是這個新生事物很多理念都非常新,但客戶的需求是傳統(tǒng)虛機用法,似乎那時的Docker并沒有帶來特別多的好處,而且Docker Hub的用法,CloudStack里secondary storage并不能很好的支持,所以最后我們還是采用了LXC的方案。我在做好POC后,就交給印度團隊去實現(xiàn)了。也是從那個時候我開始了解并認識容器技術(shù)。
從這個背景,就可以看出我個人對IaaS和容器技術(shù)的關(guān)系,簡而言之,容器和IaaS將來誰動誰的奶酪,不取決于兩者自身,而是取決于用戶如何使用容器技術(shù)。
大家都知道,Docker可以火起來,并非是它使用了輕量級的虛擬化技術(shù),這個技術(shù)LXC早就有了。而是它提倡了一種新的構(gòu)建App- Centric應(yīng)用的方式。這個方式區(qū)別于我們傳統(tǒng)的集中式架構(gòu)的應(yīng)用設(shè)計,以微服務(wù)為核心,構(gòu)造一種新型的分布式應(yīng)用集群。這是互聯(lián)網(wǎng)公司非常需要和喜歡的,也是廣大DevOps人員喜歡的。所以在很長一段時間,從我們做IaaS開發(fā)者的角度來看,容器技術(shù)更偏向于PaaS,做的是PaaS層面的事情,跟我們是井水不犯河水的。
但近一兩年容器技術(shù)的快速發(fā)展,各種容器編排系統(tǒng)的出現(xiàn)。讓IaaS從業(yè)人員產(chǎn)生了一種危機感。即容器越來越模糊了PaaS和IaaS的界限,很多容器編排系統(tǒng)其實已經(jīng)在做IaaS的事情。那么是不是有一天IaaS會完全被容器取代,我們的奶酪被容器動了?
ZStack出來之后,很多朋友都在問我們什么時候支持容器,包括我的前老板梁勝,大家知道他創(chuàng)建的Rancher是做容器的,也建議我轉(zhuǎn)做容器。但我們卻遲遲沒有動作,很多朋友都很急,說IaaS早就過氣了,現(xiàn)在容器才是風(fēng)口,你做容器無論是在融資還是講故事,都比IaaS好多了。但從我個人的角度來說,我始終認為容器最強大的地方在于它帶來構(gòu)建應(yīng)用理念的變化,應(yīng)該是做App-Centric的編排系統(tǒng),如果傳統(tǒng)IaaS要往這個方向做,需要做出的改變還是挺多的。如果僅僅是像OpenStack里nova-docker那樣做,對于ZStack來說就是一個星期的工作量,但這種虛機的用法,不應(yīng)該是容器的主流,當(dāng)時我是這么認為的。
但近半年來,我跟不少互聯(lián)網(wǎng)公司用容器的朋友聊過,也看過像京東、360的同行關(guān)于容器使用的分享,我驚奇的發(fā)現(xiàn)似乎將容器當(dāng)做虛機用似乎已經(jīng)開始流行起來,并非我之前想象的大家會基于容器技術(shù)重新構(gòu)建應(yīng)用。這個時候我感覺到,或許將來真正的情況是,IaaS會動了容器的奶酪。
一項技術(shù)的流行和普及,最初都是從技術(shù)圈子里散播開來,技術(shù)的發(fā)起者或許有著非常遠大的抱付和初衷,但用戶使用這項技術(shù)的現(xiàn)實可能并不是想象那樣。用戶總是會找到最適合自身業(yè)務(wù)的方法來使用新技術(shù)。容器也是如此。因為大部分運維人員和開發(fā)人員,最熟悉的還是以虛機的方式構(gòu)建應(yīng)用,當(dāng)容器帶來了更快、密度更高,更輕量級的虛擬化技術(shù)時,大量的存量系統(tǒng)還是以他們最熟悉的方式,就是虛機方式來使用容器技術(shù)。這個現(xiàn)實,為傳統(tǒng)IaaS帶來了巨大的機會。
因為虛機用法的編排系統(tǒng),是傳統(tǒng)IaaS最擅長的。一旦用戶用腳投票,最終讓容器虛機用法流行開來,目前的各種容器編排系統(tǒng)相對于IaaS來說就沒有任何優(yōu)勢。因為IaaS是最了解計算、存儲、網(wǎng)絡(luò)子系統(tǒng)的,容器僅僅是計算部分的一個分支而已。容器的編排系統(tǒng)如果要做IaaS的事情,就會越做越重,也就是把IaaS的事情重做一次,世界就不那么美好了。
前幾天在另外一個群,DaoCloud的CEO羅比也談到了容器和IaaS的關(guān)系看法,他認為大家最好的情況是一對好基友,井水不犯河水。我也覺得這是最好的方式,容器做PaaS層的事情,跟IaaS層無縫配合一起構(gòu)建出生態(tài)。但如果一旦容器虛機化在生產(chǎn)環(huán)境流行起來,那么IaaS一定會犯這個河水,踏入容器的領(lǐng)域。
但從另一個方面我們也要看到,App-Centric的應(yīng)用仍然是所有容器從業(yè)者最希望看到的,也是他們在不懈努力的方向。激進的容器擁護者聲稱容器多進程、SSH的使用都是落后的應(yīng)用方式,不是原生的容器應(yīng)用,倡導(dǎo)大家要圍繞容器構(gòu)建出新型的應(yīng)用。這個其實是我們IaaS從業(yè)者很希望看到的。因為IaaS本身提供的功能離用戶的最終業(yè)務(wù)還是太遠,我們非常需要有一個層面,把IaaS和用戶的業(yè)務(wù)粘合起來。從目前來看,我認為容器是最好的選擇。我們希望看到有一個標準的容器層,能夠適配不同的IaaS,為用戶打包、分發(fā)、管理、監(jiān)控、運維自己的業(yè)務(wù)。這樣IaaS可以專注做IaaS的東西,而不是大包大攬什么都做。這是最理想的生態(tài)關(guān)系。
未來的現(xiàn)實如何我們現(xiàn)在很難預(yù)料,因為容器技術(shù)仍然處于Hype Cycle的上升期。雖然互聯(lián)網(wǎng)公司已經(jīng)有不少成功案例,例如Netflix,但大家知道互聯(lián)網(wǎng)公司的很多技術(shù)都是屠龍術(shù),不是廣大傳統(tǒng)企業(yè)能玩轉(zhuǎn)的。所以最終容器技術(shù)的落地情況如何,還是要看如何擁抱傳統(tǒng)應(yīng)用。未來雖然有可能屬于App-Centric的容器時代,但也可能是被現(xiàn)實拖回傳統(tǒng)的虛機方式。這里面的關(guān)鍵,還是在于用戶如何去使用這個技術(shù),在于用戶如何用腳投票。
所以今天這個話題《IaaS和容器:誰動了誰的奶酪》,我的觀點可以概括為:如果將來流行的容器用法仍然是虛機方式,那么IaaS一定會動容器的奶酪;如未來屬于App-Centric,那么IaaS跟容器屬于相互依賴的健康生態(tài),共同構(gòu)建用戶數(shù)據(jù)中心的新形態(tài)。容器我個人認為是比較難動IaaS的奶酪的,因為存儲、網(wǎng)絡(luò)這些部分是繞不開的,如果容器編排系統(tǒng)選擇向下發(fā)展,那么只會陷入另一個IaaS的泥沼,這些是他們不擅長的。但有一種情況是可能的,就是用戶的容器部署只需要一個輕量級的IaaS,那么這個時候重量級的IaaS就會變的很尷尬,可能被容器使用者拋棄。這個也是ZStack這樣輕量級IaaS的機會,我個人認為輕量級的IaaS + App-Centric的容器集群,會是未來廣大容器用戶喜歡可看到的方式。IaaS在容器時代仍然是充滿機會和大有可為的。
Q&A
Q:容器當(dāng)做虛機,CloudFoundry現(xiàn)在能很好的支持Docker Hub的用法嗎,如何做到的?
A:很抱歉我不是容器的專家,對各個容器編排系統(tǒng)了解也有限。第一個問題我無法回答,因為我沒有研究過CloudFoundry 對Docker Hub是如何支持的。但從技術(shù)上來說,IaaS支持Docker Hub沒有技術(shù)障礙。我以大家熟悉的OpenStack舉例,Glance完全被Docker Hub做成一個后端,用戶無需上傳image,只要輸入自己的賬號,就可以瀏覽和下載image到cinder這樣的塊存儲服務(wù)。將來ZStack對 Docker Hub的支持也是這個思路,即把Docker Hub做成我們的backup storage的一個后端插件。
Q:『Mesos是在大規(guī)模集群生產(chǎn)環(huán)境中運行Docker的黃金搭檔?!粚@句話你的看法是?你提到的容器編排系統(tǒng),是否指Mesos,還是指Docker Swarm或Kubernetes?
A:我指的容器編排系統(tǒng)主要就是k8s、Mesos、Rancher這些。他們的主要方向還是奔著App-Centric去的。至于誰是Docker的黃金搭檔我不知道,我感覺每家都說自己是最佳選擇和黃金搭檔。當(dāng)然這是因為他們對我國的新廣告法不太了解。
Q:容器適配不同的IaaS:容器是對操作系統(tǒng)的虛擬化,對網(wǎng)絡(luò)、計算、存儲的適配是操作系統(tǒng)的基本功能,容器適配不同的IaaS應(yīng)該自然就有的功能吧?
A:容器適配IaaS主要是指容器的編排系統(tǒng)可以通過IaaS的API去獲取自己需要的計算、網(wǎng)絡(luò)、存儲的資源。例如通過 IaaS的API去創(chuàng)建虛機,拿到虛機的IP地址去部署容器;又例如使用創(chuàng)建私有網(wǎng)絡(luò)等功能。好的IaaS必定是提供全API給容器編排系統(tǒng)使用的。這樣容器編排系統(tǒng)可以專注往上做,做DevOps的功能,而不是把精力浪費在管理存儲、網(wǎng)絡(luò)這些它自己不刪除的東西。比如說容器編排系統(tǒng)去編程硬件交換機配置網(wǎng)絡(luò),我認為就是方向走偏了,是在做IaaS的東西。
Q:能不能詳細點解釋一下App-Centric是什么樣的?
A:App-Centric要解釋清楚比較難,這個跟Microservices、Cloud-Native Apps一樣。要用簡單的幾句話解釋清楚是比較難的。我個人簡單理解是,App-Centric的編排系統(tǒng)的核心是應(yīng)用的的部署、管理、發(fā)布、持續(xù)集成,一切功能以應(yīng)用為中心設(shè)計。如果編排系統(tǒng)的核心是管理計算、存儲、網(wǎng)絡(luò)的硬件資源,那這個是iaas的編排系統(tǒng),就不是App-Centric的。
Q:問一下輕量級的IaaS,除了ZStack還有哪個比較成熟?
A:我當(dāng)然想說是ZStack。我看到后面有幾個關(guān)于問ZStack的問題,為了避免在這次分享上打廣告,我就不詳細講了。歡迎大家訪問我們的網(wǎng)站zstack.org/cn,我們有16篇技術(shù)文章講我們的不同和優(yōu)勢。另外關(guān)于跟OpenStack和CloudStack的對比,大家百度一下ZStack、OpenStack、CloudStack就可以搜到幾篇業(yè)內(nèi)人士寫的對比文章。
Q:雖然有京東和360案例,但你支持把容器當(dāng)虛擬機使用嗎,為什么?很多人曾經(jīng)很質(zhì)疑這種方案,包括我也反對。
A:這個問題很難說支持和不支持,我剛才也說了,技術(shù)人員有自己的情懷和初衷,但市場是用腳投票的。用戶選擇了這樣的方式一定有他自己的理由,沒有對錯之分。運維人員有一句話叫沒有絕對好的技術(shù),只有最適合的技術(shù)。其實很容易理解為啥大家會把容器當(dāng)虛機用,因為已有的存量系統(tǒng)都是基于虛機設(shè)計的,要為了容器的出現(xiàn)而重寫業(yè)務(wù)系統(tǒng),我認為除非有巨大的痛點,否則很少有公司會主動去這么做。當(dāng)然,很多新興互聯(lián)網(wǎng)公司,在沒有歷史包袱的情況下,我非常贊同以新的方式去構(gòu)建業(yè)務(wù)系統(tǒng),但這也不是那么容易的。借Netflix 團隊的一句話說:你看到了我們現(xiàn)在微服務(wù)做的這么好,是因為我沒告訴我們填過多少坑。
Q:請問 IaaS+APP是怎樣的一個架構(gòu)呢,在您最后一段分享里”因為大部分運維人員和開發(fā)人員,最熟悉的還是以虛機的方式構(gòu)建應(yīng)用,當(dāng)容器帶來了更快、密度更高,更輕量級的虛擬化技術(shù)時,大量的存量系統(tǒng)還是以他們最熟悉的方式,就是虛機方式來使用容器技術(shù)。這個現(xiàn)實,為傳統(tǒng)IaaS帶來了巨大的機會。“,可以簡單介紹下“為傳統(tǒng)IaaS帶來了巨大的機會”中有哪些機會嗎?
A:這個巨大的機會就是讓我們反思大而重的IaaS系統(tǒng)到底是不是客戶所需要的,IaaS系統(tǒng)自身是否需要做減法做虛擬化+。因為我們看到使用容器的很多公司,他們沒有SDN,沒有分布式存儲,一樣把業(yè)務(wù)搬遷到容器上了,運行的很好。那么現(xiàn)在大而重IaaS系統(tǒng)設(shè)計,是不是路走偏了,我們是不是能夠把IaaS簡化,提供最方便、最可靠、最容易的方式讓容器使用IaaS,而不是讓容器因為IaaS的大而重拒絕IaaS而自己去做 IaaS的功能。
林帆:容器和虛擬機本質(zhì)上只是實現(xiàn)虛擬化的兩種方式,一開始初衷不同,之后由于用戶習(xí)慣而產(chǎn)生一些交叉,最終而言容器的應(yīng)用場景還是會趨于 PaaS化的。沒記錯的話,在京東和360的例子里,是先經(jīng)過了Docker做虛擬機這樣的過渡時期吧,但最終的目標同樣是真正將容器的分布式調(diào)度、編排的優(yōu)勢發(fā)揮出來,也就是走向類似PaaS的方向。
Q:我的理解是容器做虛擬機使用這個過程更多的存在于產(chǎn)品底子已經(jīng)比較重的企業(yè),很多互聯(lián)網(wǎng)企業(yè)會直接從容器的PaaS模式開始,不知道你怎么看這個觀點?
從Nova-Docker和其他一批試圖把Docker做成IaaS用項目現(xiàn)在不冷不熱,和Mesos、Kubernetes社區(qū)繁榮的情況來看,Docker做IaaS只能算是一個容器過渡期的現(xiàn)象吧。并且,ZStack會打算基于IaaS推出服務(wù)編排這樣的功能嗎?
A:nova-docker不熱是正常的,因為這種虛機用法不是容器社區(qū)的主流。k8s、Mesos是主流。但大家要認識到開發(fā)者圈子里的熱并不代表市場熱,技術(shù)圈是一個最容易自high的群體。當(dāng)Hype Cycle過渡到谷底時大家才能看清楚到底市場需要的是什么技術(shù)。ZStack目前沒有計劃推出k8s這樣的編排系統(tǒng)功能,技術(shù)上不是問題,我們的架構(gòu)是編排系統(tǒng)的通用設(shè)計,用同行的評價說你們?nèi)プ?2306都沒問題。我們的主要的考慮是要專注,當(dāng)一個軟件號稱什么都能做,什么功能都有的時候,通常意味著它什么都做不好,用戶也會搞不清楚這個軟件到底要解決什么問題。但我們之后一定會推出虛擬機用法的容器集成,這個對我們來說非常簡單,而且也看到很多用戶在這樣用了,所以我們一定會去做。
Q:怎么理解什么是輕量級的IaaS,和現(xiàn)在的會有哪些變化和區(qū)別?
A:這個前面一個問題談到了。即現(xiàn)在大而重的IaaS設(shè)計不一定是市場需要的。舉個例子,OpenStack在新版本里面去掉了 nova-network,部署傳統(tǒng)的扁平網(wǎng)絡(luò)也需要用neutrons,這個我認為就是重了。輕量級的IaaS就是要使用最穩(wěn)定、最簡單的技術(shù)去實現(xiàn)用戶的使用場景。而不是期望用一種技術(shù)就能夠解決所有場景,這樣只會越做越重,越做越復(fù)雜。
Q:問一個計算的問題,我們的程序需要用到大量的GPU資源,容器理論上應(yīng)該是可以和CPU/存儲一樣高效率使用的吧,有什么限制嗎?
A:理論上是可以的,CPU/存儲的使用效率即使用傳統(tǒng)虛擬化也已經(jīng)比較高了,但IO相對于容器來說,路徑太長有性能損失。使用容器是可以很大程度上緩解這個問題,這個也是為什么我們以前HPC用一個一臺物理機一個容器的方案。
Q:你怎么看hyper.sh和clear container等超輕量級hypervisor對容器技術(shù)的影響?
A:hyper.sh、clear container解決的主要是容器的隔離性、安全性的問題。它們沒改變?nèi)萜魃鐓^(qū)倡導(dǎo)的主流。比如hyper.sh的用法跟Docker就很類似。所以我認為他們是對容器社區(qū)的補充。當(dāng)然,半個月前我也在跟Intel的虛擬化團隊溝通,建議他們做輕量級的虛機,因為我們感覺到市場對這個的需求還是很強的。
Q:ZStack跟OpenStack下的Magnum有什么相同點和區(qū)別?
A:完全沒有相同點。我們還是純IaaS,沒有為容器做特別的編排系統(tǒng)。
Q:因為我是HPC出身,我想問一下,算法開發(fā)繞不過去的Intel Cluster Studio怎么辦,授權(quán)怎么處理。我們在開發(fā)算法的時候需要深度依賴MKL你們是怎么處理的。另外就是GPGPU computing貌似還沒正式支持,這方面容器技術(shù)怎么處理呢?
A:我們只是提供計算資源,應(yīng)用層面、業(yè)務(wù)層面是用戶自己需要解決的。我不認為容器可以幫助解決這些問題。
Q:目前ZStack有沒有什么成功案例嗎?
A:有的,我們已經(jīng)有客戶使用開源版生產(chǎn)上線幾個月了。
Q:我的理解是容器做虛擬機使用這個過程更多的存在于產(chǎn)品底子已經(jīng)比較重的企業(yè),很多互聯(lián)網(wǎng)企業(yè)會直接從容器的PaaS模式開始,不知道你怎么看這個觀點?
A:這個取決于企業(yè)的歷史包袱多重。老牌互聯(lián)網(wǎng)公司的業(yè)務(wù)系統(tǒng)也很成熟穩(wěn)定了,要完全改成容器的PaaS模式,例如容器單進程,不是用SSH,我個人覺得還是有一定難度,而且企業(yè)切換的意愿也不見得強烈,但在新業(yè)務(wù)系統(tǒng)里面使用PaaS的容器模式是非常可能的,我也知道很多公司正在這么做。
Q:如何擺脫網(wǎng)絡(luò)的依賴來創(chuàng)建個Docker的image呢,我覺得這個是Docker用戶自己的基本權(quán)利?
A:這個基本權(quán)利我覺得還是要問GFW。 國外的開發(fā)人員是非常難理解有些他們認為跟水電一樣普及的基礎(chǔ)設(shè)施在某些地方還是很困難的。
Q:我認為PaaS和IaaS是不可分的,現(xiàn)在人為分開是有問題的,長久必然和二為一,樓主怎么看?在合二為一的前提下,也不存在容器和IaaS之爭了。
A:其實從用戶的層面來說他們是不分的,他們只關(guān)心自己的業(yè)務(wù)。但從開發(fā)人員的角度來說還是要分的,因為這個是理清楚自己軟件的界限,對軟件的架構(gòu)和設(shè)計都非常重要。未來的產(chǎn)品可以提供IaaS和PaaS打包的產(chǎn)品交付給客戶,但開發(fā)自己還是要分清楚產(chǎn)品里面那些是IaaS的東西,哪些是PaaS的東西,否者很難做產(chǎn)品,做設(shè)計。
Q:真正App-Centric的是SaaS,容器編排頂多算PaaS,或者說是PaaS+IaaS(PaaS、IaaS相互依存的),跟SaaS沒啥關(guān)系吧?
A:這個前面也回答了。編排系統(tǒng)的App-Centric我認為是指編排系統(tǒng)的核心功能是圍繞什么服務(wù)什么設(shè)計的。圍繞部署、分發(fā)、管理、運維、持續(xù)集成的應(yīng)該算App-Centric的編排系統(tǒng)。圍繞計算、存儲、網(wǎng)絡(luò)的算IaaS。
Q:你認為以后的趨勢是容器只要配合輕量級別IaaS?SDN那些網(wǎng)絡(luò)存儲都不用考慮,那重IaaS又應(yīng)用在什么場景?
A:我是指大部分用戶場景使用輕量級的IaaS+容器就足夠了。因為現(xiàn)在很多容器應(yīng)用也沒有使用到SDN、SDS這些技術(shù),也已經(jīng)非常流行了。SDN、SDS解決了很多傳統(tǒng)技術(shù)的痛點,當(dāng)然他們也不是銀子彈,對用戶的要求也是比較高的。所以我的看法是不能用新技術(shù)去硬套所有的場景。重的IaaS我認為適合公有云場景、大規(guī)模私有云場景的容器使用,需要用戶有較強的IT運維團隊,解決復(fù)雜環(huán)境下多租戶的容器使用問題。
===========================
以上內(nèi)容根據(jù)2015年10月6日晚微信群分享內(nèi)容整理。分享人張鑫,ZStack的聯(lián)合創(chuàng)始人,在云計算、虛擬化和軟件定義數(shù)據(jù)中心領(lǐng)域擁有近10年的從業(yè)經(jīng)驗。2006年加入Intel從事XEN內(nèi)核開發(fā)工作,為社區(qū)貢獻了QEMU E100網(wǎng)卡模擬器、XEN/IA64虛擬機BIOS的Windows支持等功能。2010年赴美加入Cloud.com(后被Citrix收購),作為 CloudStack的核心工程師,參與了三星、韓國電信、SAP、花旗銀行、摩根斯坦利、英國電信等世界500強的私有云項目。 DockOne每周都會組織定向的技術(shù)分享,歡迎感興趣的同學(xué)加微信:liyingjiesx,進群參與,您有想聽的話題可以給我們留言。