本文整理自劉超在ArchSummit2016全球架構(gòu)師峰會(huì)(北京站)的演講。
網(wǎng)易蜂巢是做容器Docker的,用Kubernetes來管理容器。現(xiàn)在蜂巢已經(jīng)支撐了內(nèi)部、外部很大規(guī)模的云計(jì)算應(yīng)用,所以我們這個(gè)題目有兩個(gè)關(guān)鍵,一個(gè)是Kubernetes和容器,另外一個(gè)是大規(guī)模云應(yīng)用。
網(wǎng)易蜂巢的大規(guī)模容器平臺(tái)
上圖展示了蜂巢發(fā)展歷程。其實(shí)很早就開始做蜂巢了,一開始從私有云開始建設(shè)。發(fā)展分成兩層:應(yīng)用層、平臺(tái)層。進(jìn)行了四個(gè)方面的轉(zhuǎn)變,一是從虛擬機(jī)進(jìn)展到容器。因?yàn)樘摂M機(jī)僅僅是資源平臺(tái)的彈性,并沒有實(shí)現(xiàn)到應(yīng)用級(jí)別的彈性,實(shí)現(xiàn)容器后對(duì)應(yīng)用層要有一定的關(guān)心、改造、架構(gòu)梳理。在應(yīng)用層我們要做微服務(wù)化的改造以及開發(fā)流程DevOps的改造,我們還經(jīng)歷了從私有云到公有云的轉(zhuǎn)化。2014年95%的應(yīng)用移到平臺(tái)上來,2015年容器云平臺(tái)才正式對(duì)外開放。很多應(yīng)用都是我們自己支撐地比較好以后才作為容器云平臺(tái)開放,對(duì)外進(jìn)行服務(wù)。2016年主要是DevOps微服務(wù)幫助用戶真正改變流程,改進(jìn)架構(gòu)。
上圖是蜂巢上大規(guī)模的云應(yīng)用,從最早的郵箱,到后來互聯(lián)網(wǎng)應(yīng)用產(chǎn)生了一個(gè)爆發(fā)的階段,很多l(xiāng)ogo大家都認(rèn)識(shí),比如說筆記、云音樂、考拉海購(gòu)等等。我們很驕傲的是,其中考拉海購(gòu)和網(wǎng)易云音樂都部署在蜂巢平臺(tái)上面,它們扛過了“雙十一”。雖然我們的音樂產(chǎn)品推出時(shí)間比較晚,但是用戶量很快激增,對(duì)整個(gè)架構(gòu)也是一個(gè)很大的挑戰(zhàn)。
蜂巢大規(guī)模容器平臺(tái)整個(gè)架構(gòu)如圖所示。我們?cè)瓉碜鲞^私有云、IaaS平臺(tái),IaaS平臺(tái)其實(shí)是比較費(fèi)力的,尤其是對(duì)網(wǎng)絡(luò)方面的優(yōu)化和存儲(chǔ)方面的優(yōu)化。到了容器平臺(tái)以后,容器本身對(duì)CPU隔離、內(nèi)存隔離、應(yīng)用隔離做得不錯(cuò),但是對(duì)跨主機(jī)網(wǎng)絡(luò)隔離、統(tǒng)一存儲(chǔ)支持做得不夠,盡管有一些開源解決方案可以做這個(gè)事情,但我覺得對(duì)IaaS平臺(tái)做的一些優(yōu)化是能夠幫助容器層來提供高性能的網(wǎng)絡(luò)和存儲(chǔ)服務(wù),所以我們的容器平臺(tái)和IaaS平臺(tái)有深度結(jié)合。在右圖的KVM,因?yàn)槲覀冏龅氖枪性?,最關(guān)注的就是安全問題。容器隔離性其實(shí)本身做得沒有那么好,容器的權(quán)限不知道開的高還是低,如果開的低用起來很別扭,因?yàn)楹芏鄼?quán)限沒有給它,但是開的高的話就可能在同一個(gè)主機(jī)上還有其他人的應(yīng)用。 在公有云平臺(tái)上,采取的策略是不同的租戶不共享主機(jī)、不共享虛擬機(jī),這樣就能實(shí)現(xiàn)比較好的隔離性