eBay宣布擁抱容器,將全面整合Kubernetes和OpenStack
在線拍賣及購物網(wǎng)站eBay比亞馬遜(Amazon)成立晚一年,但卻比Google、Facebook等眾多的巨無霸要早。和其他的伙伴們一樣,eBay也為大量的用戶提供服務(wù),它在190個國家擁有1.59億活躍買家而且支撐了超過8億條商品信息。要支持海量用戶并非易事,這需要持續(xù)擴(kuò)展基礎(chǔ)架構(gòu),所以eBay一直在積極地?fù)肀录夹g(shù)。
為了管理云端基礎(chǔ)架構(gòu),eBay在三年前把虛擬機(jī)從VMware的ESXi Hypervisor切換到了OpenStack之上的KVM,因而成為OpenStack的早期忠實(shí)用戶(eBay使用他們自行部署的OpenStack,做了大量的定制化開發(fā))。該公司從大約300臺運(yùn)行“Essex(艾塞克斯)”版本OpenStack的服務(wù)器起步,很快在三年后eBay和PayPal就共同運(yùn)行在“Havana(哈瓦那)”版本上,超過30萬個核、支持了超過1萬2千個KVM hypervisor、通過Open vSwitch虛擬交換機(jī)橫跨了十多個可用性區(qū)域(Availability Zone)而且為了公司多個業(yè)務(wù)部門的需要配置了超過15個虛擬私有云。
現(xiàn)在,eBay開始在前端使用由Google開源的Kubernetes容器調(diào)度系統(tǒng),而且eBay計劃把它與OpenStack結(jié)合在一起來管理容器化的應(yīng)用程序。
eBay是世界***零售商品牌之一,它的規(guī)模不能和諸如Google、Amazon、微軟和Facebook這類的超級巨無霸相比。但是,它的基礎(chǔ)架構(gòu)也非常大,而且該公司非常重視基礎(chǔ)架構(gòu),包括使用集裝箱式的數(shù)據(jù)中心、用燃料電池供電、使用惠普和戴爾的hyperscale(超大規(guī)模)級別的主機(jī)而且經(jīng)常使用定制化的超強(qiáng)處理器。(我們聽說,eBay喜歡讓它的處理器運(yùn)行時溫度高一點(diǎn)兒來獲得更高的系統(tǒng)性能,但eBay卻沒回應(yīng)過這個傳言)。
eBay云計算技術(shù)服務(wù)團(tuán)隊(duì)的資深成員Ashwin Raveendran本周在KubeCon 2015會議上說他們正在嘗試使用Kubernetes容器調(diào)度器來增強(qiáng)他們的OpenStack云。eBay是***個愿意把OpenStack和Kubernetes結(jié)合的大型IT企業(yè)。Raveendran說eBay(在七月已經(jīng)同PayPal支付服務(wù)進(jìn)行了拆分)還在繼續(xù)擴(kuò)展它的基礎(chǔ)架構(gòu)而且當(dāng)前在超過15萬臺服務(wù)器上使用了50多萬個核。一個更直觀的說法就是,這使得eBay的服務(wù)器集群規(guī)模已經(jīng)同Rackspace Hosting及Softlayer這類的公有云服務(wù)提供者一樣 。
在eBay一個典型的可用性區(qū)域擁有5000到20000臺服務(wù)器,而且服務(wù)器會被分配到500個節(jié)點(diǎn)的chunk中。有意思的是,根據(jù)eBay在過去公布的一些數(shù)據(jù),在2013年(在它剝離PayPal之前)它的CPU核數(shù)呈現(xiàn)為線性地增長而VM以及部署在其基礎(chǔ)架構(gòu)上的項(xiàng)目的數(shù)量則是指數(shù)級增長。關(guān)于存儲,我們猜想eBay擁有超過200PB的容量,它應(yīng)該運(yùn)行在相當(dāng)多的服務(wù)器之上。截止今年春天,1.6PB用于Cinder塊存儲。大約120PB的存儲用于支持Hadoop,這也使其成為世界上***的分析平臺之一。
Raveendran在eBay所就職的數(shù)據(jù)及基礎(chǔ)架構(gòu)服務(wù)部門每秒鐘從應(yīng)用程序和基礎(chǔ)架構(gòu)監(jiān)控系統(tǒng)中抽取2百萬個指標(biāo)(metrics),而且每天生成300TB以上的日志文件因?yàn)樗刻煨枰幚硎畠|次查詢并且顯示200億以上的圖片。它顯然是一個龐大且復(fù)雜的操作,而我們簡化了一點(diǎn)兒。
eBay的平臺棧看起來和大多數(shù)的現(xiàn)代企業(yè)在概念上很類似。
OpenStack統(tǒng)一管理服務(wù)器和存儲,并抽象出計算、存儲和網(wǎng)絡(luò)等資源。當(dāng)前,eBay的現(xiàn)有系統(tǒng)強(qiáng)制每一個應(yīng)用程序?qū)嵗\(yùn)行在它自己專用的虛擬機(jī)中。eBay使用Kubernetes不僅僅是改為用容器來部署應(yīng)用程序,而是在該公司以基礎(chǔ)架構(gòu)的云計算層為中心來改變應(yīng)用程序的生命周期 (包括構(gòu)建、部署、監(jiān)控并且修復(fù)問等開發(fā)者和系統(tǒng)管理員需要執(zhí)行的關(guān)鍵功能)。eBay計劃以容器作為運(yùn)行環(huán)境而Kubernetes在OpenStack之上來管理這些容器來實(shí)現(xiàn)更佳靈活的部署模型。eBay所采用的Kubernetes使用方式是受到了他們當(dāng)前在虛擬機(jī)里部署應(yīng)用程序的自主技術(shù)的啟發(fā)。
當(dāng)前的設(shè)置如圖所示:
目前,eBay的大多數(shù)程序是用Java開發(fā)的。而且和很多基于虛擬機(jī)的商業(yè)集群一樣,eBay的集群也是以靜態(tài)的方式來調(diào)度的。嚴(yán)格地講,這種方式意味著基礎(chǔ)架構(gòu)云中的服務(wù)器節(jié)點(diǎn)被分配到每一類負(fù)載中,就像這樣:
在集群中靜態(tài)地調(diào)度節(jié)點(diǎn)顯然不是一個理想的狀態(tài),但是很多公司在部分應(yīng)用程序存在很大峰值的情況下也同樣在其私有云中靜態(tài)地分配容量。“這些服務(wù)對于相應(yīng)的私有云而言是很大的問題,而且當(dāng)我們需要容量的時候也不能迅速擴(kuò)展到公有云上去“,Raveendran解釋到。“我們不得不***化地利用我們的資源”。
(除非你能創(chuàng)建和Amazon類似的自己擁有的公有云,當(dāng)然我們跑題了)。
但是為什么諸如Kubernetes和Mesosphere等技術(shù)越來越受關(guān)注的原因之一是當(dāng)多個負(fù)載共享一臺主機(jī)時他們對于服務(wù)器的開銷要小得多,而且可能更重要的是運(yùn)行擴(kuò)展負(fù)載的容器相比于傳統(tǒng)的服務(wù)器虛擬化能夠以一種快得多的方式啟動和終止。曾經(jīng)老舊的軟件容器技術(shù)又煥發(fā)了新生,而且現(xiàn)在對于那些在過去的十年里使用相當(dāng)重的技術(shù)來進(jìn)行服務(wù)器虛擬化的企業(yè)而言很有誘惑力。他們現(xiàn)在開始明白什么時候堅固異常的虛擬機(jī)隔離手段并不必要而什么時候容器就可以滿足需求了。
eBay主動擁抱了容器,但也需要繼續(xù)在其基礎(chǔ)架構(gòu)云中支持虛擬機(jī),因此它計劃使用OpenStack的Magnum插件,請看五月的文章了解該平臺的信息,它是用來將Docker Swarm和Kubernetes容器調(diào)度器引入OpenStack。
如你所見,eBay將用Kubernetes加入Docker容器運(yùn)行環(huán)境的kubelet主機(jī)代理進(jìn)程替代其自主的主機(jī)代理進(jìn)程。應(yīng)用程序?qū)囊粋€容器倉庫下載并被部署到Kubernetes pod中的一臺服務(wù)器,而且pod中的所有服務(wù)器在需要時可以被共同地管理。這個配置也將在eBay當(dāng)前的基礎(chǔ)架構(gòu)中淘汰靜態(tài)的負(fù)載均衡器和防火墻,Raveeddran稱之為基礎(chǔ)架構(gòu)運(yùn)維中的一個大瓶頸。當(dāng)這些都完成了,動態(tài)調(diào)度看起來就是這樣的:
Raveendran解釋說是Kubernetes能夠吸引eBay關(guān)注的原因就是因?yàn)樗情_源軟件,有很多人在一起協(xié)作而且eBay可以有所貢獻(xiàn)也能從中受益。可能更重要的, 在多個運(yùn)行Docker容器的公有云上Kubernetes可以用于控制器層,這使得eBay在需求發(fā)起時有能力擴(kuò)展到公有云而且工作負(fù)載能夠從eBay的分布式私有云遷移到一個公有云中。
Raveendran說,轉(zhuǎn)向Docker容器和Kubernetes來控制工作負(fù)載并不是沒有挑戰(zhàn)。如很多人多年來抱怨的,網(wǎng)絡(luò)是OpenStack的一個挑戰(zhàn),特別是當(dāng)前的現(xiàn)實(shí)問題是OpenStack并沒有一個同Amazon Web服務(wù)(AWS)和Google計算引擎(Google Compute Engine)類似的虛擬路由器。但這里是eBay對于如何解決它的思考:
其想法是使用OpenStack的Neutron網(wǎng)絡(luò)插件來創(chuàng)建一個Kubernetes路由器。Raveendran說在經(jīng)歷了一個漫長的過程后,eBay只是將用于網(wǎng)絡(luò)三層所有路徑的邊界網(wǎng)關(guān)協(xié)議(BGP)下放到服務(wù)器主機(jī)而非僅僅停留在基礎(chǔ)架構(gòu)中的機(jī)柜頂部交換機(jī)(TOR)上。這些是eBay的巨無霸伙伴們?yōu)榱撕喕W(wǎng)絡(luò)已經(jīng)完成的事情,它使得一個單一網(wǎng)絡(luò)囊括了差不多10萬臺設(shè)備(有時會更多)。
eBay擔(dān)心的另一件事是規(guī)模,當(dāng)然他們正在和Kubernetes社區(qū)一起提升Kubernetes的性能。Kubernetes早期發(fā)布版本中有一些自行設(shè)定的限制,因?yàn)镚oogle和他的社區(qū)伙伴們試圖使得語法和基礎(chǔ)適用于混合的負(fù)載以及不同于Google內(nèi)部規(guī)范的硬件環(huán)境。eBay正在努力構(gòu)建自己的Kubernetes集群并使用Kubernetes來抽象容器層以便于實(shí)現(xiàn)跨數(shù)據(jù)中心region或者私有云和公有云混合體的擴(kuò)展。另外,eBay也在嘗試一種方式把它的Cinder塊存儲與Kubernetes容器pods相結(jié)合。