內容來源:2017年4月21日,京東雲產品部總經理郭理靖在「K8S技術社區」進行《雲計算的下一個時代——「容器時代」》演講分享。IT 大咖說(Id : itdakashuo)做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。docker
閱讀字數:2329 | 4分鐘閱讀安全
嘉賓演講視頻地址:suo.im/4OjYfk網絡
隨着容器技術的發展,容器成爲了目前最受歡迎和關注的項目。京東在容器的實踐過程當中,結合虛擬機,對容器技術作了優化和改進,他們是怎麼作的?架構
在容器和服務發現相關的內容裏,docker和kubernetes排在前面。在整個工具鏈裏,docker、jenkins和kubernetes比較受用戶的關注。框架
容器是將來的一個趨勢。我在2013年的時候就開始接觸容器,後來發現docker開源以後很是合適咱們,因此咱們就開始在內部嘗試容器化。微服務
咱們堅信容器是下一個將來,是未來的大主流,因此容器上面的編排是很是重要的。據數據顯示,用容器的公司在九個月以內都會把本身容器的規模double一下。將來容器佔有率的增加速度可能會比咱們想象的還要快。根據咱們內部以及用戶的數據來看,用容器比用VMS的成本下降約50%。工具
經過這麼一組數據,我想表達一個觀點,計算的下一個時代已經來臨了。測試
京東作容器有很長一段時間了。咱們從2003年開始應用容器,到2006年的時候,京東內部已經大規模容器化。優化
傳統的虛擬化技術就是在宿主機裏套一層虛擬機管理軟件,讓虛擬機去作全部的安全隔離修復。而容器的優勢就在於啓動快體積小,應用發佈方便。網站
在虛擬化時代,它的安全是強隔離的,生態也比較完善。通過十年的發展,虛擬化的網絡存儲都至關成熟。咱們把虛擬化和容器結合了起來。
容器最大的問題還在於隔離性。雖然咱們相信本身開發出的應用比較安全,能夠在公司內部用傳統的容器部署方案,但在公用雲上不行,由於咱們永遠不知道各類各樣的用戶有什麼目的,公用雲用戶的應用是不可信的。咱們要在公用雲上給咱們的用戶提供完整安全的服務。
有時啓動一個虛擬機會更慢,可能由於是拉一個鏡像就使它變慢了,或者給本身的鏡像作備份的時候裏面裝一些應用。應用和鏡像大了,總體的啓動就會慢一些。咱們啓動VM工做進行了一些簡化,改寫了KVM,讓KVM適配docker標準的鏡像。既利用了虛擬化的安全、生態和它的成熟度,同時要保留容器啓動速度、體積和應用的優點。
咱們也提出了不少標準化的東西。咱們的接口、模塊都是標準化的,併兼容docker的API管理工具,有很好的兼容性。
蜂鳥的容器雲服務核心是多樣化配置。傳統最小的雲主機通常是1核1G,但在蜂鳥容器雲服務裏,最小的配置能夠作到1核64兆,成本縮減了1/12。
JCLOUD容器和咱們在京東雲上建立的雲主機能夠放到同一個VPC裏,也就意味着咱們支持VM和容器相互通訊。
存儲的插件也是咱們本身作的。京東雲借鑑了OpenStack全部API的設計和架構。存儲這一塊咱們用的是本身的雲硬盤。在京東雲裏,容器和主機是對等關係,它們共用底下的網絡和存儲。
京東容器雲服務和傳統的一些業界作法不太同樣。咱們把虛擬機和容器融爲一體,和網絡深度結合。
咱們保留了Kubernetes的原生組件,換了POD,還有網絡和存儲。
京東有世界上最大的容器集羣之一,能保證京東61八、雙11的大促。咱們內部99%的應用已經作好了容器化。剛接觸容器的時候,爲了減小損耗和風險,咱們把VM換成容器。但尚未利用到docker的精髓。由於Docker不只提供隔離的方案,還有提供應用分發的解決。直到2.0版本的時候,才變成一個真正的容器kubernetes集羣,應用也能夠double到鏡像裏。
在容器工具層內部,咱們開始用的是docker。若是直接用docker的話,在公用雲裏面是無法直接提供服務的,因此咱們把這個容器工具改造hypervisor,這樣就能給用戶提供安全的隔離。內部咱們用的網絡比較簡單,在外部咱們組建了一個很強網絡團隊,去開發CDN網絡,畢竟公用雲環境跟內部的環境是徹底不同的。在公用雲裏稍微有一些定製化。內外部容器最大的不一樣主要是這些。
容器雲有一個很是典型的應用,就是數據採集,咱們也能夠叫爬蟲。對於爬蟲最大的問題仍是ip。咱們提供了豐富的ip池,包含了一百個C的ip。每一個用戶來申請ip的時候,都會給它分配均勻。每一個用戶爬取採集的網站是不同的。因此咱們對每一個用戶都有一個黑名單的ip,這樣就能保證每一個ip都是可用的。
對於微服務的概念你們可能已經耳熟能詳了。咱們在京東雲上面提供的電商雲服務,就是電商雲標準的一個微服務框架。咱們先是把電商中心、用戶中心、商品中心、客服中心這些拆成一個微服務,經過容器部署上去。
微服務是docker很是好的應用場景,也是業界用得最大的應用場景。
不少企業裏微服務仍是用得最多的一個場景。容器恰好解決了微服務的好多痛點。容器夠小,微服務也小,恰好能夠匹配,解決部署微服務對機器數量的要求。每一個容器都是獨立的,並且是和應用綁定,容器恰好能解決微服務多語言的問題。
作微服務的時候不該該強制每一個服務用一樣的語言實現。每一個服務有本身不一樣的使命,對於不一樣的服務,應該採用不一樣的語言去解決,反而可以提升效率。
容器的橫向擴容和縱向擴容跟微服務息息相關。
不論是微服務仍是容器服務,最終目的仍是要提升整個團隊開發和部署效率。
其實用容器和用虛擬機省下來的錢可能只有一點點,可是在這我的工上省的錢是很是多的。因此微服務和容器主要的優點不是節省的機器成本,而是節省管理和能源上的成本。
DevOps的開發環境、測試環境和市場環境統一化以後帶來的好處就是,若是有一個相對比較完整的開發環境,不依賴於別人的進度,對每一個開發者而言,效率可以提升升不少。
不論是容器也好,微服務也好,這種理念須要整個團隊全部人都承認以後,才能產生這個工具應該產生的效率和效用。
今天的分享就到這裏,謝謝你們!